API-beëindigingen en verwijderingen in Chrome 56

Joe Medley
Joe Medley

In bijna elke versie van Chrome zien we een aanzienlijk aantal updates en verbeteringen aan het product, de prestaties ervan en ook de mogelijkheden van het webplatform. In dit artikel worden de beëindigingen en verwijderingen beschreven van Chrome 56, dat vanaf 8 december in bèta is. Deze lijst kan op elk moment worden gewijzigd.

Ondersteuning voor SHA-1-certificaten verwijderen

Het cryptografische hash-algoritme SHA-1 vertoonde ruim elf jaar geleden voor het eerst tekenen van zwakte en recent onderzoek wijst op de dreigende mogelijkheid van aanvallen die een directe impact kunnen hebben op de integriteit van de publieke sleutelinfrastructuur (PKI) op het web.

Om gebruikers tegen dergelijke aanvallen te beschermen, ondersteunt Chrome niet langer SHA-1-certificaten vanaf Chrome 56, waarvan de stabiele release in januari 2017 is. Het bezoeken van een site die een dergelijk certificaat gebruikt, resulteert in een interstitial waarschuwing. We geven meer details op de Chrome Security Blog .

Intentie om te verwijderen | Chromestatustracker | Chroombug

Verwijder ECDSA-codes in CBC-modus in TLS

De constructie van de CBC-modus van TLS is gebrekkig, waardoor het kwetsbaar is en zeer moeilijk veilig te implementeren is. Hoewel cijfers in CBC-modus nog steeds veel worden gebruikt bij RSA, bestaan ​​ze vrijwel niet bij ECDSA. Andere browsers ondersteunen deze cijfers nog steeds, wij denken dat het risico laag is. Bovendien wordt ECDSA in TLS door weinig organisaties gebruikt en meestal met een complexere opzet (sommige oudere clients ondersteunen alleen RSA), dus we verwachten dat ECDSA-sites beter worden onderhouden en sneller reageren in geval van problemen.

TLS 1.2 heeft nieuwe cijfers toegevoegd op basis van AEAD's die deze problemen vermijden, met name AES_128_GCM, AES_256_GCM of CHACHA20_POLY1305. Hoewel we dit momenteel alleen vereisen voor op ECDSA gebaseerde sites, wordt het aanbevolen voor alle beheerders. Op AEAD gebaseerde cijfers verbeteren niet alleen de beveiliging, maar ook de prestaties. AES-GCM heeft hardwareondersteuning op recente CPU's en ChaCha20-Poly1305 maakt snelle software-implementaties mogelijk. Ondertussen vereisen CBC-cijfers langzame, complexe oplossingen en PRNG-toegang voor elk uitgaand record. Op AEAD gebaseerde cijfers zijn ook een voorwaarde voor HTTP/2- en False Start-optimalisaties.

Intentie om te verwijderen | Chromestatustracker | Chroombug

Verwijder gebruikersgebaren van aanraakscrollen

We hebben meerdere voorbeelden gezien van slecht geschreven of kwaadaardige advertenties die navigatie activeren voor aanraakscrollen, hetzij bij touchstart , hetzij bij alle touchend gebeurtenissen. Als een 'wiel'-gebeurtenis geen pop-up kan openen, zou scrollen met aanraken dat ook niet moeten doen. Dit kan sommige scenario's verbreken, bijvoorbeeld media die niet worden afgespeeld bij aanraking of pop-ups die niet worden geopend bij aanraking. Safari slaagt er in al deze scenario's al stilletjes niet in om pop-ups te openen.

Intentie om te verwijderen | Chromestatustracker | Chroombug

Sta alle ophaalacties voor scripts met ongeldige type-/taalkenmerken niet toe

Momenteel haalt de preload-scanner van Chrome items op in <scripts> -elementen, ongeacht de waarde van het type of language , hoewel het script niet wordt uitgevoerd wanneer het wordt geparseerd. Door het afschaffen van het ophalen zullen de vooraf geladen scanner en de parser dezelfde semantiek hebben, en zullen we geen ophaalacties initiëren voor scripts die we niet zullen gebruiken. Dit is bedoeld om gegevens op te slaan voor gebruikers die naar sites navigeren met veel aangepaste scripttags die naverwerkt zijn (zoals bijvoorbeeld type="text/template" ).

Het gebruiksscenario van het gebruik van ongeldige scripts om servers te pingen wordt adequaat gedekt door de sendBeacon API .

Deze wijziging brengt Chrome op één lijn met Safari, hoewel Firefox nog steeds om scripts vraagt, ongeacht het type of de taal.

Intentie om te verwijderen | Chromestatustracker | Chroombug

MediaStreamTrack.getSources() verwijderen

Deze methode maakt geen deel meer uit van de specificatie en wordt door geen enkele andere grote browser ondersteund. Het is vervangen door MediaDevices.enumerateDevices() , dat Blink sinds versie 47 zonder vlaggen ondersteunt en dat ook door andere browsers wordt ondersteund. Een voorbeeld hiervan ziet u hieronder. Deze hypothetische functie getCameras() maakt eerst gebruik van functiedetectie om enumerateDevices() te vinden en te gebruiken. Als de functiedetectie mislukt, wordt gezocht naar getSources() in MediaStreamTrack . Als er ten slotte geen enkele API-ondersteuning is, retourneer dan de lege cameras .

    function getCameras(camerasCallback) {
      var cameras = [];
      if('enumerateDevices' in navigator.mediaDevices) {
         navigator.mediaDevices.enumerateDevices()
          .then(function(sources) {
            return sources.filter(function(source) { 
              return source.kind == 'videoinput' 
            });
          })
          .then(function(sources) {
            sources.forEach(function(source) {
              if(source.label.indexOf('facing back') >= 0) {
                // move front facing to the front.
                cameras.unshift(source);
              }
              else {
                cameras.push(source);
              }
            });
            camerasCallback(cameras);
          });
      }
      else if('getSources' in MediaStreamTrack) {
        MediaStreamTrack.getSources(function(sources) {

          for(var i = 0; i < sources.length; i++) {
            var source = sources[i];
            if(source.kind === 'video') {

              if(source.facing === 'environment') {
                // cameras facing the environment are pushed to the front of the page
                cameras.unshift(source);
              }
              else {
                cameras.push(source);
              }
            }
          }
          camerasCallback(cameras);
        });
      }
      else {
        // We can't pick the correct camera because the API doesn't support it.
        camerasCallback(cameras);
      }
    };

Intentie om te verwijderen | Chromestatustracker | Chroombug

Verwijder de reflect-xss CSP-richtlijn

Vroege versies van de Content Security Policy Level 2- specificatie bevatten een reflected-xss richtlijn die niets anders bood dan de X-XSS-Protection -header, afgezien van een andere syntaxis. Deze richtlijn is in 2015 uit de specificatie verwijderd, maar niet voordat deze in Chrome werd geïmplementeerd. De steun voor deze richtlijn wordt nu weggenomen.

Intentie om te verwijderen | Chromestatustracker | Chroombug

Vervang CSP 'referrer'-richtlijn

Dankzij de CSP- referrer konden site-eigenaren een verwijzingsbeleid instellen op basis van een HTTP-header. Deze functie wordt niet alleen zeer weinig gebruikt , maar maakt ook geen deel meer uit van de W3C-specificaties.

Sites die deze functionaliteit nog steeds nodig hebben, moeten <meta name="referrer"> of de nieuwe Referrer-Policy header gebruiken.

Intentie om te verwijderen | Chromestatustracker | Chroombug

Verwijder het veld PaymentAddress.careOf

De PaymentAddress interface heeft een careOf veld dat niet-standaard is (geen bekende adresstandaarden ondersteunen dit). Het veld careOf is ook niet nodig, de velden ontvanger en organisatie ondersteunen voldoende alle noodzakelijke gebruiksscenario's. Het toevoegen van careOf levert aanzienlijke problemen op in termen van interoperabiliteit met bestaande postadresschema's en API's. Lees voor een uitgebreidere discussie het voorstel voor het verwijderen van specificaties op GitHub.

Intentie om te verwijderen | Chroombug

Verwijder SVGViewElement.viewTarget

Het kenmerk SVGViewElement.viewTarget maakt geen deel uit van de SVG2.0-specificatie en het gebruik ervan is klein of bestaat niet. Dit kenmerk is verouderd in Chrome 54 en is nu verwijderd.

Intentie om te verwijderen | Chromestatustracker | Chroombug