Einstellungen und Entfernungen in Chrome 60

Joe Medley
Joe Medley

Bei fast jeder Chrome-Version gibt es eine große Anzahl von Updates und Verbesserungen am Produkt, an seiner Leistung und auch an den Funktionen der Webplattform. In diesem Artikel werden die Einstellung und Entfernung von Funktionen in Chrome 60 beschrieben, das seit dem 8. Juni in der Betaphase ist. Diese Liste kann sich jederzeit ändern.

Sicherheit

Für crypto.subtle ist jetzt ein sicherer Ursprung erforderlich

Die Web Crypto API, die seit Chrome 37 unterstützt wird, funktionierte immer bei nicht sicheren Ursprüngen. Gemäß der langjährigen Chrome-Richtlinie, sichere Ursprünge für leistungsstarke Funktionen zu bevorzugen, ist crypto.subtle nicht nur für sichere Ursprünge sichtbar.

Intent to Remove | Chromium-Fehler

Vom Inhalt initiierte Navigationen im oberen Frame zu Daten-URLs entfernen

Da nicht technisch versierte Browsernutzer das data:-Schema nicht kennen, wird es immer häufiger bei Spoofing- und Phishing-Angriffen verwendet. Um dies zu verhindern, blockieren wir das Laden von data:-URLs auf Webseiten im oberen Frame. Das gilt für <a>-Tags, window.open, window.location und ähnliche Mechanismen. Das data:-Schema funktioniert weiterhin für Ressourcen, die von einer Seite geladen werden.

Diese Funktion wurde in Chrome 58 eingestellt und ist jetzt entfernt.

Entfernung geplant | Chromestatus-Tracker | Chromium-Fehler

navigator.sendBeacon() für einige Blobs vorübergehend deaktivieren

Die Funktion navigator.sendBeacon() ist seit Chrome 39 verfügbar. Bei der ursprünglichen Implementierung konnte das data-Argument der Funktion beliebige Blobs enthalten, deren Typ nicht auf der CORS-Safelist steht. Wir sind der Meinung, dass dies eine potenzielle Sicherheitsbedrohung darstellt, auch wenn noch niemand versucht hat, sie auszunutzen. Da wir KEINE angemessene sofortige Lösung dafür haben, kann sendBeacon() vorübergehend nicht mehr auf Blobs aufgerufen werden, deren Typ NICHT auf der CORS-Safelist steht.

Diese Änderung wurde zwar für Chrome 60 implementiert, aber inzwischen wieder in Chrome 59 zusammengeführt.

Chromium-Fehler

CSS

Schattendurchdringender Abkömmling-Kombinator soll sich wie Abkömmling-Kombinator verhalten

Der Schattendurchdringende Nachkommen-Kombinator (>>>), Teil des CSS-Skalierungsmoduls der 1. Ebene, sollte die untergeordneten Elemente eines bestimmten übergeordneten Elements auch dann abgleichen, wenn sie sich in einem Schattenbaum befanden. Das hatte einige Einschränkungen. Erstens: Gemäß der Spezifikation konnte es nur in JavaScript-Aufrufen wie querySelector() verwendet werden und funktionierte nicht in Stylesheets. Noch wichtiger ist, dass Browseranbieter es nicht geschafft haben, es über eine Ebene des Shadow DOM hinaus zu implementieren.

Daher wurde der Abkömmling-Kombinator aus den entsprechenden Spezifikationen entfernt, einschließlich Shadow DOM v1. Anstatt Webseiten zu beeinträchtigen, indem wir diesen Selector aus Chromium entfernen, haben wir stattdessen den Alias des Schatten durchdringenden Nachkommen-Kombinators dem Nachkommen-Kombinator zugewiesen. Das ursprüngliche Verhalten wurde in Chrome 45 eingestellt. Das neue Verhalten ist in Chrome 61 implementiert.

Entfernung geplant | Chromestatus-Tracker | Chromium-Fehler

JavaScript

RTCPeerConnection.getStreamById() einstellen und entfernen

Vor fast zwei Jahren wurde getStreamById() aus der WebRTC-Spezifikation entfernt. Die meisten anderen Browser haben diese Funktion bereits aus ihren Implementierungen entfernt. Diese Funktion wird zwar vermutlich nur selten verwendet, es besteht jedoch ein geringes Risiko für die Interoperabilität mit Edge und WebKit-basierten Browsern außer Safari, in dem getStreamById() weiterhin unterstützt wird. Entwickler, die eine alternative Implementierung benötigen, finden unten im Intent to Remove Beispielcode.

Die Funktion wird in Chrome 62 entfernt.

Entfernung geplant | Chromestatus-Tracker | Chromium-Fehler

SVGPathElement.getPathSegAtLength eingestellt

Vor mehr als zwei Jahren wurde getPathSegAtLength() aus der SVG-Spezifikation entfernt. Da es nur wenige Treffer für diese Methode in httparchive gibt, wird sie in Chrome 60 eingestellt. Die Entfernung erfolgt voraussichtlich in Chrome 62, das Anfang oder Mitte Oktober veröffentlicht wird.

Beabsichtigte Einstellung | Chromestatus-Tracker | Chromium-Fehler

getContextAttributes() hinter ein Flag verschieben

Die Funktion getContextAttributes() wird seit 2013 auf CanvasRenderingContext2D unterstützt. Die Funktion war jedoch nicht Teil eines Standards und ist es auch seitdem nicht geworden. Sie sollte über das Befehlszeilen-Flag --enable-experimental-canvas-features implementiert werden, wurde aber fälschlicherweise nicht implementiert. In Chrome 60 wurde dieser Fehler korrigiert. Es wird davon ausgegangen, dass diese Änderung sicher ist, da es keine Daten gibt, die darauf hinweisen, dass jemand die Methode verwendet.

Chromium-Fehler

Entfernen Sie Headers.prototype.getAll().

Die Funktion Headers.prototype.getAll() wird gemäß der neuesten Version der Abrufsspezifikation entfernt.

Entfernung geplant | Chromestatus-Tracker | Chromium-Fehler

indexedDB.webkitGetDatabaseNames() entfernen

Wir haben diese Funktion hinzugefügt, als die Indexierte Datenbank noch relativ neu in Chrome war und Präfixe sehr beliebt waren. Die API gibt asynchron eine Liste der vorhandenen Datenbanknamen in einem Ursprung zurück, was sinnvoll erschien.

Leider ist das Design fehlerhaft, da die Ergebnisse möglicherweise schon veraltet sind, sobald sie zurückgegeben werden. Daher kann es nur für die Protokollierung, nicht aber für eine ernsthafte Anwendungslogik verwendet werden. Das GitHub-Problem enthält Verweise auf frühere Diskussionen zu Alternativen, die einen anderen Ansatz erfordern würden. Es gab zwar immer wieder mal Interesse von Entwicklern, aber aufgrund der mangelnden browserübergreifenden Fortschritte wurde das Problem von Bibliotheksautoren umgangen.

Entwickler, die diese Funktion benötigen, müssen ihre eigene Lösung entwickeln. Bibliotheken wie Dexie.js verwenden beispielsweise eine globale Tabelle, die selbst eine weitere Datenbank ist, um die Namen von Datenbanken zu erfassen.

Diese Funktion wurde in Chrome 58 eingestellt und ist jetzt entfernt.

Entfernung geplant | Chromestatus-Tracker | Chromium-Fehler

WEBKIT_KEYFRAMES_RULE und WEBKIT_KEYFRAME_RULE entfernen

Die nicht standardmäßigen Konstanten WEBKIT_KEYFRAMES_RULE und WEBKIT_KEYFRAME_RULE werden aus der CSS-Regel entfernt. Entwickler sollten stattdessen KEYFRAMES_RULE und KEYFRAME_RULE verwenden.

Entfernung geplant | Chromestatus-Tracker | Chromium-Fehler

Benutzeroberfläche

Nutzerinteraktion für „beforeunload“-Dialogfelder erforderlich machen

Ab Chrome 60 wird das beforeunload-Dialogfeld nur angezeigt, wenn der Frame, in dem es angezeigt werden soll, eine Nutzergeste oder Nutzerinteraktion erhalten hat (oder wenn ein eingebetteter Frame eine solche Geste erhalten hat). Hinweis: Das Ereignis beforeunload wird weiterhin gesendet. Es ändert sich nur, ob das Dialogfeld angezeigt wird.

Das Dialogfeld beforeunload ist ein modales App-Dialogfeld. Daher ist es von Natur aus nutzerfeindlich, d. h., es reagiert auf die Navigation des Nutzers, indem es seine Entscheidung infrage stellt. Es gibt positive Verwendungsmöglichkeiten für diese Funktion. Sie werden beispielsweise häufig verwendet, um Nutzer zu warnen, wenn sie durch die Navigation Daten verlieren.

Die Möglichkeit, auf einer Seite Text für das beforeunload-Dialogfeld anzugeben, wurde vor einiger Zeit entfernt. beforeunload-Dialogfelder sind jedoch weiterhin ein Missbrauchsvektor. Insbesondere beforeunload-Dialogfelder sind ein Bestandteil von betrügerischen Websites, auf denen automatisch abgespielte Audioinhalte und bedrohliche Texte einen Kontext schaffen, in dem die von Chromium bereitgestellte Meldung „Sind Sie sicher, dass Sie diese Seite verlassen möchten?“ besorgniserregend wird.

Wir möchten den Dialog beforeunload nur für sinnvolle Zwecke zulassen. Ein Dialogfeld eignet sich gut, wenn der Nutzer einen Status hat, der verloren gehen könnte. Wenn der Nutzer noch nie mit der Seite interagiert hat, kann er keinen Status haben, der verloren gehen könnte. Daher besteht kein Risiko für den Verlust von Nutzerdaten, wenn das Dialogfeld in diesem Fall ausgeblendet wird.