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

Jonathan Hao
Jonathan Hao

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.

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.
Gdy PNA zablokuje żądanie nawigacji, użytkownicy zobaczą określony błąd z możliwością ręcznego ponownego załadowania i zaakceptowania żą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