Co to jest dostęp do sieci prywatnej?
Dostęp do sieci prywatnej (PNA, wcześniej znany jako CORS-RFC1918, pokrótce: dostęp do sieci lokalnej) to funkcja zabezpieczeń, która ogranicza możliwość wysyłania przez witryny żądań do serwerów w sieciach prywatnych. Pomaga to chronić użytkowników i sieci wewnętrzne przed potencjalnymi atakami, takimi jak sfałszowanie żądania między witrynami (CSRF). Stopniowo wdrażamy PNA w Chrome, a w kolejnych wersjach dodamy ochronę.
Kluczowe zabezpieczenia PNA (z ich bieżącym stanem)
- Bezpieczne konteksty: tylko zabezpieczone konteksty mogą wysyłać żądania podzasobów sieci prywatnej (wymuszane od Chrome 94). Szczegółowe informacje znajdziesz w poście z aktualizacją dostępu do sieci prywatnej.
- Żądania wstępne: Chrome wysyła żądania wstępne przed żądaniami podzasobów sieci prywatnej, aby sprawdzić uprawnienia serwera (ostrzeżenia w Narzędziach deweloperskich o błędach od Chrome 104, które będą egzekwowane w Chrome 130). Zostało to opisane w artykule Private Network Access: Introductions Preflights (Dostęp do sieci prywatnej: wprowadzenie do procesów wstępnych). Od wersji Chrome 123 Chrome pomija niektóre nagłówki CORS, takie jak
Accept
, jeśli proces wstępny został utworzony i wysłany tylko za pomocą PNA. - Wyłączenia z tego samego źródła: od wersji Chrome 115 żądania z tego samego pochodzenia pochodzące z potencjalnie wiarygodnych źródeł są zwolnione z ograniczeń PNA.
Rozszerzona ochrona: mechanizmy robocze
Ochrona PNA zostanie zastosowana na instancje robocze (dedykowane instancje robocze, instancje robocze udostępnione) i skrypty service worker. Obejmuje to m.in.:
- Pobieranie skryptów instancji roboczych: wymaga bezpiecznych kontekstów i procesów wstępnych w przypadku mniej publicznych adresów IP. Ostrzeżenia od Chrome 110, które będą wymuszane w Chrome 130.
- Pobrania zainicjowane przez skrypty instancji roboczych: wszystkie pobierania w skryptach instancji roboczych są zgodne z tymi samymi regułami PNA.
W Chrome 124 możesz przetestować egzekwowanie zasad w ten sposób:
- Wyłącz opcję
chrome://flags/#private-network-access-ignore-worker-errors
- Włącz opcję
chrome://flags/#private-network-access-respect-preflight-results
Rozszerzona ochrona: pobieranie danych nawigacyjnych
Funkcja PNA ma również zastosowanie do pobierania elementów nawigacyjnych (elementów iframe, wyskakujących okienek) ze względu na ich potencjalne wykorzystanie w atakach CSRF. W Chrome 123 zaczęliśmy wyświetlać ostrzeżenia o błędach, a egzekwowanie zasad jest zaplanowane w Chrome 130.
W Chrome 124 możesz przetestować egzekwowanie zasad przez:
- Wyłącz opcję
chrome://flags/#private-network-access-ignore-navigation-errors
- Włącz opcję
chrome://flags/#private-network-access-respect-preflight-results
Gdy PNA zablokuje żądanie nawigacji, użytkownicy zobaczą określony błąd z możliwością ręcznego ponownego załadowania strony i zezwolenia na wysłanie żądania.
Co zrobić, jeśli wpłynie to na Twoją witrynę?
Wskazówki znajdziesz w poście Private Network Access: wprowadzający proces wstępny. Co ważne, w przypadku próśb o nawigację:
Access-Control-Allow-Origin
nie może być symbolem wieloznacznym ("*"
).Access-Control-Allow-Credentials
musi mieć wartość"true"
.
Co dalej?
- WebSockets: wstępnie od Chrome w wersji 126 PNA będzie obejmować uzgadnianie połączenia WebSocket (w pierwszej kolejności zapoznaj się z ostrzeżeniami).
- Pełne egzekwowanie: wszystkie ograniczenia PNA będą wstępnie egzekwowane (blokowanie niezgodnych żądań) w Chrome 130. Użytkownicy będą mieli ustawioną opcję zastępowania PNA w przypadku zaufanych witryn.
Opinia na temat przypadków użycia sieci prywatnej
Jeśli hostujesz witrynę w sieci prywatnej, która wymaga żądań z sieci publicznych, zespół Chrome potrzebuje Twojej opinii. Zgłoś problem na stronie Chromium Issue Tracker (komponent: Blink>SecurityFeature>CORS>PrivateNetworkAccess).
Zdjęcie: Jakub Żerdzicki, Unsplash