Tło
Chrome 94 wprowadził blokowanie dostępu do sieci prywatnej z niebezpiecznych stron publicznych. Trwający test wycofania dostępu do sieci prywatnej z niezabezpieczonych kontekstów wykazał trudności w przenoszeniu do HTTPS witryn, na które to ma wpływ. Typowym problemem jest trudność migracji urządzeń prywatnych do HTTPS, co prowadzi do naruszeń kontroli treści mieszanych.
Aby rozwiązać wspomniany wcześniej problem, w ramach okresu próbnego origin Chrome 120 udostępniamy nową prośbę o przyznanie uprawnień
Prośba o uprawnienia jako nowa opcja
Dodanie nowego atrybutu targetAddressSpace
jako opcji pobierania spowoduje, że żądanie będzie mogło pominąć sprawdzanie treści mieszanych.
Przykład:
fetch("http://router.local/ping", {
targetAddressSpace: "private",
});
Zgodnie z zasadami dotyczącymi prywatnego dostępu do sieci: wprowadzenie procesów wstępnych każde żądanie sieci prywatnej będzie poprzedzone żądaniem wstępnym. To żądanie wstępne będzie zawierać nowy nagłówek Access-Control-Request-Private-Network: true
, a odpowiednia odpowiedź musi zawierać nagłówek Access-Control-Allow-Private-Network: true
.
Aby dostosować się do prośby o nowe uprawnienia, urządzenia muszą zawierać 2 nowe nagłówki odpowiedzi: Private-Network-Access-Name
i Private-Network-Access-ID
.
Private-Network-Access-Name: <some human-readable device name>
Private-Network-Access-ID: <the MAC address of the device>
Przykład:
Private-Network-Access-Name: "My Smart Toothbrush"
Private-Network-Access-ID: "01:23:45:67:89:0A"
Private-Network-Access-ID
: 48-bitowa wartość przedstawiona jako 6 bajtów szesnastkowych rozdzielonych dwukropkami.
Private-Network-Access-Name
: prawidłowa nazwa jako ciąg znaków pasujący do wyrażenia regularnego ECMAScript /^[a-z0-9_-.]+$/
. Maksymalna długość nazwy to 248 jednostek kodu UTF-8.
Prezentacja
Wersję demonstracyjną znajdziesz na stronie https://private-network-access-permission-test.glitch.me/.
Rejestrowanie się w wersji próbnej origin
Aby zachęcić deweloperów do stosowania bezpiecznych ograniczeń kontekstu w przypadku dostępu do sieci prywatnej, udostępniamy je w Chrome od wersji 120 do 122 jako próbę źródłową.
Aby umożliwić witrynie korzystanie z prośby o uprawnienia, zarejestruj się w ramach wersji próbnej:
- Poproś o token dla swojego źródła.
- Użyj tokena na jeden z tych sposobów:
- W kodzie HTML:
html <meta http-equiv="Origin-Trial" content="TOKEN_GOES_HERE">
- W kodzie JavaScript:
js const meta = document.createElement('meta'); meta.httpEquiv = 'Origin-Trial'; meta.content = 'TOKEN_GOES_HERE'; document.head.append(meta);
- W nagłówkach HTTP:
text Origin-Trial: TOKEN_GOES_HERE
- W kodzie HTML:
Aby przesłać opinię lub sugestie dotyczące tej funkcji, zgłoś problem w repozytorium GitHub.