Dostęp do sieci prywatnej: rozszerzona ochrona dla procesów internetowych i pobierania nawigacji

Jonathan Hao
Jonathan Hao

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.

Gdy PNA blokuje żądanie nawigacji, użytkownicy zobaczą określony błąd z opcją ręcznego ponownego wczytania i zezwolenia na żądanie.
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