Czym jest dostęp z sieci prywatnej?
Prywatny dostęp do sieci (PNA, wcześniej znany jako CORS-RFC1918 (w skrócie „Dostęp przez sieć lokalną”) to funkcja zabezpieczeń, która ogranicza możliwość wysyłania żądań do serwerów w sieciach prywatnych. Pomaga to chronić użytkowników i sieci wewnętrzne przed potencjalnymi atakami, takimi jak fałszowanie żądań w różnych witrynach (CSRF). Chrome stopniowo wdraża PNA, a w przyszłych wersjach rozszerzy ochronę.
Kluczowe zabezpieczenia PNA (w ich bieżącym stanie)
- Bezpieczne konteksty: tylko zabezpieczone konteksty mogą wysyłać żądania zasobów podrzędnych sieci prywatnej (obowiązujące od 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 sieci prywatnej, aby sprawdzić uprawnienia serwera (ostrzeżenia w Narzędziach deweloperskich dotyczące błędów występujących od wersji Chrome 104 są wymuszane w Chrome 130). Zostało to opisane w artykule Prywatny dostęp do sieci: Przedstawiamy procesy wstępne. Od Chrome w wersji 123 Chrome pomija niektóre nagłówki CORS, takie jak
Accept
, jeśli proces wstępny jest tworzony i wysyłany tylko ze względu na PNA. - Wyłączenia z tego samego pochodzenia: od Chrome 115 żądania tego samego źródła pochodzące z potencjalnie wiarygodnych źródeł są zwolnione z ograniczeń PNA.
Rozszerzona ochrona: instancje robocze
Ochrona PNA będzie obejmować zasoby robocze internetowe (dedykowane instancje robocze, współdzielone instancje robocze i mechanizmy 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ą wymagane w Chrome 130.
- Pobrania inicjowane przez skrypty instancji roboczej: wszystkie pobrania z poziomu skryptów instancji roboczej podlegają tym samym regułom PNA.
Od wersji 124 przeglądarki Chrome możesz przetestować 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 ma również zastosowanie do pobierania nawigacji (elementów iframe, wyskakujących okienek) ze względu na ich potencjalne wykorzystanie w atakach CSRF. W Chrome 123 pojawiły się ostrzeżenia o błędach i planowano egzekwować ten dostęp w Chrome 130.
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 zablokuje żądanie nawigacji, użytkownicy zobaczą określony błąd z opcją ręcznego ponownego załadowania i zezwolenia na żądanie.
Co zrobić, jeśli Twoja witryna jest zainfekowana?
Wskazówki znajdziesz w poście Private Network Access: prezentowanie procesów wstępnych. Co ważne w przypadku próśb o nawigację:
- Wartość
Access-Control-Allow-Origin
nie może być symbolem wieloznacznym ("*"
). - Pole
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 PNA będą wstępnie egzekwowane (blokowanie niezgodnych żądań) w Chrome 130. Użytkownicy będą mieli ustawienie umożliwiające zastąpienie PNA w przypadku zaufanych witryn.
Opinie na temat przypadków użycia sieci prywatnej
Jeśli hostujesz witrynę w sieci prywatnej, która wymaga żądań z sieci publicznych, zespół Chrome czeka na Twoją opinię. Zgłoś problem w narzędziu Chromium Issue Tracker (komponent: Blink>SecurityFeature>CORS>PrivateNetworkAccess).
Zdjęcie autorstwa Jakub Żerdzicki z Unsplash