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 niebezpiecznych kontekstów wykazał trudności w przenoszeniu dotkniętych problemem witryn do HTTPS. 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 Chrome 120 udostępniliśmy nowy monit uprawnień w ramach testowania origin.
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 artykułem Dostęp z sieci prywatnej: wprowadzenie procesów wstępnych każde żądanie w 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 uwzględnić nowe żądanie uprawnień, wymagaliśmy od urządzeń uwzględnienia 2 nowych nagłówków 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ą.
Zarejestruj się w ramach wersji próbnej, aby umożliwić witrynie korzystanie z prośby o uprawnienia:
- 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:
Jeśli chcesz podzielić się opinią lub sugestiami dotyczącymi tej funkcji, zgłoś problem w repozytorium GitHub.