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ź, czySharedArrayBuffer
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.
- Poproś o token dla punktu początkowego.
- 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
- Dodaj tag
Więcej informacji
- Przewodnik dotyczący włączania izolacji zasobów z innych domen
- Jak izolować strony z innych domen
- Dlaczego izolacja zasobów z innych domen jest potrzebna
Zdjęcie na banerze: Daniel Gregoire o Unsplash