SharedArrayBuffer-Updates in Android Chrome 88 und Chrome 92 für Computer

Man kann sagen, dass das Land von SharedArrayBuffer auf der aber die Dinge beruhigen sich. Dazu sollten Sie Folgendes wissen:

Kurz zusammengefasst

  • SharedArrayBuffer wird derzeit in Firefox 79 und höher unterstützt, ist aber bald auch für Android verfügbar Chrome 88. Sie ist jedoch nur für Seiten verfügbar, die ursprungsübergreifend isoliert sind.
  • SharedArrayBuffer ist derzeit in der Desktopversion von Chrome verfügbar, aber ab Chrome 92 auf ursprungsübergreifende isolierte Seiten beschränkt. Wenn Sie nicht der Meinung sind, Wenn Sie diese Änderung später vornehmen können, können Sie sich für einen Ursprungstest registrieren, um das aktuelle Verhalten mindestens bis Chrome beizubehalten. 113.
  • Wenn Sie die ursprungsübergreifende Isolierung aktivieren, um weiterhin SharedArrayBuffer bewertet die Auswirkungen auf andere ursprungsübergreifende Conversions Elemente auf Ihrer Website, wie z. B. Anzeigen-Placements. Prüfen, ob SharedArrayBuffer wird von Ihren Drittanbieter-Ressourcen genutzt, um die Auswirkungen und Anleitung.

Übersicht über die ursprungsübergreifende Isolierung

Sie können eine Seite ursprungsübergreifend isoliert machen, indem Sie sie mit diesen Header:

Cross-Origin-Embedder-Policy: require-corp
Cross-Origin-Opener-Policy: same-origin

Danach kann Ihre Seite nur noch ursprungsübergreifender Content laden, Die Ressource lässt dies explizit über einen Cross-Origin-Resource-Policy zu Header oder CORS-Header (Access-Control-Allow-* usw.).

Es gibt auch eine Reporting API, Daten zu Anfragen erheben, die infolge eines Cross-Origin-Embedder-Policy und Cross-Origin-Opener-Policy.

Wenn Sie der Meinung sind, dass Sie diese Änderungen nicht rechtzeitig in Chrome 92 vornehmen können, Für einen Ursprungstest registrieren, um die aktuelle Version von Chrome für Computer beizubehalten bis Chrome 113 verfügbar.

Weitere Informationen finden Sie unten auf dieser Seite im Abschnitt Weitere Informationen. finden Sie weitere Anleitungen und Informationen zur ursprungsübergreifenden Isolierung.

Wie haben wir das erreicht?

SharedArrayBuffer ist jetzt auch für Chrome 60 verfügbar (also Juli 2017). statt der Chrome-Versionen die Zeit in Datumsangaben zu berücksichtigen, und alles war großartig. Für 6 Monate.

Im Januar 2018 wurde eine Sicherheitslücke in einigen beliebten CPUs aufgedeckt. Weitere Informationen finden Sie in der Ankündigung um alle Details zu sehen, bedeutete aber im Wesentlichen, dass der Code zum Lesen des Arbeitsspeichers, auf den sie keinen Zugriff haben sollte.

Dies war für uns Browseranbieter ein Problem, da wir Websites erlauben möchten, in Form von JavaScript und WASM erstellen, aber streng den Speicher kontrollieren, auf den Code zugreifen kann. Wenn Sie meine Website besuchen, sollte ich nicht in der Lage sein, aus der Onlinebanking-Website, die Sie geöffnet haben. Eigentlich sollte ich und wissen, dass Sie Ihr Onlinebanking geöffnet haben. Dies sind die Grundlagen Websicherheit.

Um dies zu vermeiden, haben wir die Auflösung unserer hochauflösenden Timer reduziert, als performance.now(). Du kannst jedoch einen Timer mit hoher Auflösung erstellen, indem du SharedArrayBuffer durch Ändern des Arbeitsspeichers in einer engen Schleife in einem Worker und Lesen von in einem anderen Thread. Dies könnte nicht effektiv abgemildert werden, auf gut beabsichtigten Code auswirkt. Daher wurde SharedArrayBuffer deaktiviert. gesprochen.

Eine allgemeine Abhilfemaßnahme besteht darin, sicherzustellen, dass der Systemprozess einer Webseite keine sensible Daten von anderen Quellen. Chrome hatte in ein Multi-Prozess-System Architektur von Anfang an (erinnern Sie sich?), aber es gab auch dennoch Fälle, in denen Daten von mehreren Websites im selben Prozess landen:

<iframe src="https://your-bank.example/balance.json"></iframe>
<script src="https://your-bank.example/balance.json"></script>
<link rel="stylesheet" href="https://your-bank.example/balance.json" />
<img src="https://your-bank.example/balance.json" />
<video src="https://your-bank.example/balance.json"></video>
<!-- …and more… -->

Diese APIs haben ein „Legacy“. das es ermöglicht, dass Inhalte anderer Herkunft ohne Opt-in von der anderen Quelle verwendet werden. Diese Anfragen erfolgen über die Cookies des anderen Ursprungs, sodass es vollständig „angemeldet“ ist Heutzutage gibt es Für APIs muss der andere Ursprung die Aktivierung mithilfe von CORS

Wir haben diese veralteten APIs umgangen, indem wir verhinderten, dass Inhalte in den im Prozess der Webseite verarbeitet, wenn diese "falsch" aussieht, und sie als ursprungsübergreifende Leseblockierung bezeichnet wird. In den oben genannten Fällen dürfen JSON nicht in den Prozess eindringen, für eine dieser APIs ein gültiges Format. Das heißt, außer iFrames. Für iFrames den Inhalt in einen anderen Prozess verschieben.

Nach diesen Schutzmaßnahmen haben wir SharedArrayBuffer wieder in Chrome eingeführt. 68 (Juli 2018), aber nur auf dem Computer. Aufgrund der zusätzlichen Prozessanforderungen auf Mobilgeräten nicht möglich war. Es wurde auch darauf hingewiesen, dass die Lösung von Chrome unvollständig, da nur "inkorrekt" blockiert wurde. Datenformate, während es möglich (sehr ungewöhnlich), dass gültige CSS/JS/Bilder unter erratenden URLs private Daten enthalten.

Web-Standards entwickelten gemeinsam eine umfassendere browserübergreifende Lösung. Die Lösung bestand darin, Seiten die Möglichkeit zu geben, Möglichkeit, Inhalte anderer Herkunft ohne deren Zustimmung in den Prozess zu integrieren. Diese Deklaration erfolgt über COOP- und COEP-Header. die mit der Seite ausgeliefert werden. Der Browser erzwingt dies und im Gegenzug erhält die Seite Zugriff auf SharedArrayBuffer und andere APIs mit ähnlichen Berechtigungen. Andere Ursprünge für das Einbetten von Inhalten über Cross-Origin-Resource-Policy oder CORS.

Diese Einschränkung wurde von Firefox als erstes Gerät für SharedArrayBuffer eingeführt: in Version 79 (Juli 2020).

Dann habe ich diesen Artikel im Januar 2021 geschrieben und du hast ihn gelesen. Hallo.

Und das ist der aktuelle Punkt. Mit Chrome 88 kannst du SharedArrayBuffer wieder nutzen Android für ursprungsübergreifende isolierte Seiten und Chrome 92 bietet dieselben Anforderungen an Desktop-Computer, sowohl für Konsistenz als auch für eine Isolation.

Umstellung von Chrome auf dem Computer verzögern

Dies ist eine vorübergehende Ausnahme in Form eines Ursprungstests die Menschen mehr Zeit für die Implementierung ursprungsübergreifend isolierter Seiten. Sie ermöglicht SharedArrayBuffer verwenden, ohne dass die Seite ursprungsübergreifend isoliert sein muss. Die die Ausnahme läuft in Chrome 113 ab und die Ausnahme gilt nur für Computer Chrome

  1. Fordern Sie ein Token für Ihren Ursprung an.
  2. Fügen Sie das Token zu Ihren Seiten hinzu. Dafür gibt es zwei Möglichkeiten: <ph type="x-smartling-placeholder">
      </ph>
    • Fügen Sie im Header jeder Seite ein origin-trial-<meta>-Tag ein. Beispiel: kann dies etwa so aussehen:
      <meta http-equiv="origin-trial" content="TOKEN_GOES_HERE">
    • Wenn Sie Ihren Server konfigurieren können, können Sie auch das Token hinzufügen. mit einem Origin-Trial-HTTP-Header. Der resultierende Antwortheader sollte Sie sehen in etwa so aus:
      Origin-Trial: TOKEN_GOES_HERE

Weitere Informationen

Bannerfoto von Daniel Gregoire auf Unsplash