Czym jest dostęp z sieci prywatnej?
Dostęp do sieci prywatnej (PNA, wcześniej CORS-RFC1918 i krótko „Dostęp do sieci lokalnej”) to funkcja zabezpieczeń, która ogranicza możliwość wysyłania żądań przez witryny do serwerów w sieciach prywatnych. Pomaga to chronić użytkowników i sieci wewnętrzne przed potencjalnymi atakami, takimi jak atak polegający na sfałszowaniu żądania z innej witryny (CSRF). Chrome stopniowo wdraża PNA, a w przyszłych wersjach rozszerzy ochronę.
Najważniejsze zabezpieczenia PNA (z ich bieżącym stanem)
- Bezpieczne konteksty: tylko bezpieczne konteksty mogą wysyłać żądania zasobów podrzędnych w sieci prywatnej (obowiązkowo od wersji Chrome 94). Więcej informacji znajdziesz w artykule o aktualizacji usługi Private Network Access.
- Żądania wstępne: Chrome wysyła żądania wstępne przed żądaniami zasobów podrzędnych w sieci prywatnej, aby sprawdzić uprawnienia serwera (w Chrome 104 i nowszych w przypadku błędów wyświetlane są ostrzeżenia w Narzędziech deweloperskich, a w Chrome 130 będzie to wymagane). Opisaliśmy to w artykule Dostęp z sieci prywatnej: wstępne procesy. Od wersji 123 przeglądarki Chrome pomija niektóre nagłówki CORS, takie jak
Accept
, jeśli pakiet wstępny jest tworzony i wysyłany tylko z powodu PNA. - Wyjątki dotyczące tego samego źródła: od wersji 115 Chrome żądania z tego samego źródła pochodzące z potencjalnie zaufanych źródeł są zwolnione z ograniczeń związanych z zasadami PNA.
Rozszerzona ochrona: pracownicy internetowi
Ochrona PNA zostanie rozszerzona na skrypty web worker (dedykowane, współdzielone i skrypty service worker). Obejmuje to m.in.:
- Pobieranie skryptów robota: wymaga bezpiecznych kontekstów i testów wstępnych w przypadku mniej publicznych adresów IP. Ostrzeżenia od wersji 110, które będą wymagane w wersji 130.
- Pobierania inicjowane przez skrypty robocze: wszystkie pobierania z wykonywania skryptów roboczych podlegają tym samym regułom PNA.
Od wersji 124 Chrome możesz testować wymuszanie, wykonując te czynności:
- Wyłącz
chrome://flags/#private-network-access-ignore-worker-errors
- Włącz
chrome://flags/#private-network-access-respect-preflight-results
Rozszerzona ochrona: pobieranie danych nawigacji
PNA dotyczy również pobierania elementów nawigacji (iframe, wyskakujące okienka) ze względu na ich potencjalne wykorzystanie w atakach CSRF. W Chrome 123 zaczęliśmy wyświetlać ostrzeżenia o niepowodzeniach. W Chrome 130 zaczniemy egzekwować te zasady.
Od wersji 124 Chrome możesz testować egzekwowanie zasad:
- Wyłącz
chrome://flags/#private-network-access-ignore-navigation-errors
- Włącz
chrome://flags/#private-network-access-respect-preflight-results
Gdy PNA blokuje żądanie nawigacji, użytkownicy zobaczą określony błąd z opcją ręcznego ponownego wczytania i zezwolenia na żądanie.

Co zrobić, jeśli Twoja witryna jest zainfekowana?
W poście Dostęp z sieci prywatnej: prezentacja wstępnej analizy zapytań znajdziesz wskazówki. Ważne: w przypadku żądań nawigacji:
Access-Control-Allow-Origin
nie może być symbolem wieloznacznym ("*"
).Access-Control-Allow-Credentials
musi mieć wartość"true"
.
Co dalej?
- WebSockets w wersji Chrome 126 (wstępnej) PNA będzie obsługiwać uzgodnienia połączenia WebSocket (najpierw ostrzeżenia).
- Pełne egzekwowanie: wszystkie ograniczenia dotyczące PNA zostaną wdrożone (blokując żądania niezgodne z zasadami) w Chrome 130. Użytkownicy będą mogli w ustawieniach witryny zastąpić PNA w przypadku zaufanych witryn.
Opinie dotyczące zastosowań sieci prywatnych
Jeśli hostujesz witrynę w sieci prywatnej, która potrzebuje żądań z sieci publicznej, zespół Chrome chce otrzymać od Ciebie opinię. Zgłoś problem w narzędzie do śledzenia błędów Chromium (komponent: Blink>SecurityFeature>CORS>PrivateNetworkAccess).
Zdjęcie: Jakub Żerdzicki z Unsplash