Aktualizacje narzędzia SharedSlateBuffer w Androidzie 88 i komputerowej wersji Chrome 92

Trzeba przyznać, że strona SharedArrayBuffer miała trochę słabej jakości w internecie, ale wszystko się załatwia. Oto, co musisz wiedzieć na ten temat:

W skrócie

  • SharedArrayBuffer działa obecnie w przeglądarce Firefox w wersji 79 i nowszych, a wkrótce będzie można z niej korzystać również na Androidzie. Chrome 88. Jest on jednak dostępny tylko w przypadku stron, które są izolowane od zasobów z innych domen.
  • Aplikacja SharedArrayBuffer jest obecnie dostępna w Chrome na komputery, ale w Chrome 92, będzie ograniczona do stron izolowanych od zasobów z innych domen. Jeśli nie uważasz, jesteś w stanie wprowadzić tę zmianę na czas, możesz zarejestrować się do udziału w testowaniu origin, aby zachować aktualne działanie Chrome 113.
  • Jeśli zamierzasz włączyć izolację zasobów z innych domen, aby nadal używać SharedArrayBuffer ocenia wpływ, jaki będzie to miało na witryny z innych domen elementy witryny, takie jak miejsca docelowe reklam. Sprawdź, czy SharedArrayBuffer jest wykorzystywana przez zewnętrzne zasoby, aby przeanalizować wpływ ze wskazówkami.

Omówienie izolacji zasobów z innych domen

Możesz ustawić stronę izolowaną od zasobów z innych domen, wyświetlając ją przy użyciu tych nagłówki:

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

Gdy to zrobisz, strona nie będzie mogła wczytywać treści z innych domen, zasób wyraźnie na niego zezwala za pomocą interfejsu Cross-Origin-Resource-Policy nagłówek lub nagłówki CORS (Access-Control-Allow-* itd.).

Dostępny jest też interfejs API do raportowania, który pozwala mogą zbierać dane na temat żądań, których nie udało się w wyniku Cross-Origin-Embedder-Policy i Cross-Origin-Opener-Policy.

Jeśli uważasz, że nie uda Ci się wprowadzić tych zmian w Chrome 92, zarejestruj się w wersji próbnej origin, by zachować bieżącą wersję komputerowej wersji Chrome będzie działać do wersji Chrome 113 lub nowszej.

Zapoznaj się z sekcją Więcej informacji u dołu tej strony .

Jak dotarliśmy do tego miejsca?

Produkt SharedArrayBuffer jest już dostępny w Chrome 60 (to lipiec 2017 r. dla osób, które myślę o datach, a nie o wersjach Chrome). Wszystko było fajne. Przez 6 miesięcy.

W styczniu 2018 roku odkryliśmy lukę w zabezpieczeniach niektórych popularnych procesorów. Zobacz ogłoszenie ale po prostu pozwalał na minutniki odczytujące pamięć, do której aplikacja nie powinna mieć dostępu.

Był to problem dla naszych dostawców przeglądarek, ponieważ chcemy umożliwić wykonywanie witryn w postaci JavaScriptu i WASM, ale ściśle kontrolować pamięć. który ma dostęp do kodu. Jeśli trafisz na moją stronę, będę mieć możliwość ze wszystkich otwartych witryn bankowości internetowej. Mówiąc w ten sposób, nawet jeśli masz otwartą stronę bankowości internetowej. To są podstawy i bezpieczeństwa w internecie.

Aby temu zaradzić, zmniejszyliśmy rozdzielczość minutników o wysokiej rozdzielczości, jako performance.now(). Możesz jednak utworzyć minutnik o wysokiej rozdzielczości za pomocą: SharedArrayBuffer przez modyfikację pamięci w ścisłej pętli w instancji roboczej i odczytywanie w innym wątku. Nie udałoby się tego skutecznie złagodzić bez ma znaczący wpływ na kod w dobrej wierze, dlatego wyłączono SharedArrayBuffer a nawet ich anulowania.

Ogólne rozwiązanie zaradcze ma na celu dopilnowanie, by proces systemowy strony internetowej nie zawierał danych wrażliwych z innego miejsca. Przeglądarka Chrome inwestowała w wiele procesów (pamiętasz ten komiks?), ale W sytuacjach, w których dane z wielu witryn mogą trafiać do tego samego procesu:

<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… -->

Te interfejsy API mają starszą wersję zachowanie, które pozwala treści z innych źródeł używane bez zgody z innego źródła. Żądania te są przesyłane za pomocą pliki cookie z innego źródła, użytkownik jest kompletny „zalogowany” użytkownika. Obecnie nowe Interfejsy API wymagają wyrażenia zgody przez drugie źródło za pomocą CORS.

Omówiliśmy starsze interfejsy API, zapobiegając docieraniu do pliku w przypadku strony internetowej, jeśli wygląda na „nieprawidłową”, i nazywamy ją blokowaniem odczytu z innych domen. W powyższych przypadkach nie zezwalamy na wprowadzenie kodu JSON, ponieważ poprawny format dla każdego z tych interfejsów API. (z wyjątkiem elementów iframe). Elementy iframe przenieść treści do innego procesu.

Po wprowadzeniu tych zmian przywróciliśmy SharedArrayBuffer w Chrome 68 (lipiec 2018 r.), ale tylko na komputerach. Dodatkowe wymagania dotyczące procesów skłoniły nas do na urządzeniach mobilnych jest to niemożliwe. Zauważono również, że rozwiązanie Chrome była niekompletna, ponieważ blokowaliśmy jedynie błąd „nieprawidłowe” formatów danych. możliwe (choć nietypowe), że prawidłowe elementy CSS/JS/obrazy w odgadywanych adresach URL mogą zawierają prywatne dane.

Standardy internetowe wspólnie opracowały pełniejszy interfejs dla różnych przeglądarek. i rozwiązania problemu. Rozwiązaniem było umożliwienie stronom mówienia „Niniejszym zrzekam się uwzględniania w tym procesie treści z innych źródeł bez ich zgody”. Tę deklarację składa się za pomocą nagłówków COOP i COEP. wyświetlanych na stronie. Przeglądarka to wymusza, a w zamian strona zyskuje dostęp do SharedArrayBuffer i innych interfejsów API o podobnych uprawnieniach. Inne źródła mogą wyrazić zgodę na umieszczanie treści na stronie Cross-Origin-Resource-Policy lub CORS.

Przeglądarka Firefox jako pierwsza wysłała wersję SharedArrayBuffer z tym ograniczeniem. w wersji 79 (lipiec 2020 r.).

Następnie w styczniu 2021 roku napisałem ten artykuł, a Ty go przeczytałeś. Cześć.

Tutaj jesteśmy teraz. Chrome 88 przywraca stronę SharedArrayBuffer w przeglądarce na Androidzie i stronach, które są izolowane od zasobów z innych domen, a Chrome 92 wymagania dotyczące komputerów, zarówno pod kątem spójności, jak i łącznego izolacji użytkowników.

Opóźnianie zmiany wersji komputerowej Chrome

Jest to tymczasowy wyjątek w postaci „testu origin” który daje użytkownikom na wdrożenie izolowanych stron z innych domen. Dzięki niemu SharedArrayBuffer bez konieczności izolowania strony od zasobów z innych domen. wyjątek wygasa w Chrome 113, a wyjątek dotyczy tylko komputerów Chrome.

  1. Poproś o token dla punktu początkowego.
  2. Dodaj token do swoich stron. Możesz to zrobić na 2 sposoby:
    • Dodaj tag origin-trial <meta> w nagłówku każdej strony. Przykład: może to wyglądać np. tak:
      <meta http-equiv="origin-trial" content="TOKEN_GOES_HERE">
    • Jeśli masz możliwość skonfigurowania serwera, możesz też dodać token za pomocą nagłówka HTTP Origin-Trial. Otrzymany nagłówek odpowiedzi powinien wygląda tak:
      Origin-Trial: TOKEN_GOES_HERE

Więcej informacji

Zdjęcie na banerze: Daniel Gregoire o Unsplash