Private Network Access: uitgebreide bescherming voor webwerkers en navigatie-ophaalacties

Jonathan Hao
Jonathan Hao

Wat is particuliere netwerktoegang?

Private Network Access (PNA, voorheen bekend als CORS-RFC1918 en kortweg Local Network Access) is een beveiligingsfunctie die de mogelijkheid van websites beperkt om verzoeken naar servers op particuliere netwerken te sturen. Dit helpt gebruikers en interne netwerken te beschermen tegen mogelijke aanvallen zoals Cross-Site Request Forgery (CSRF). Chrome heeft PNA geleidelijk geïmplementeerd en de bescherming zal in komende releases worden uitgebreid.

Belangrijkste PNA-beveiligingen (met hun huidige status)

  • Veilige contexten : alleen beveiligde contexten mogen subresourceverzoeken voor privénetwerken indienen (afgedwongen vanaf Chrome 94). Raadpleeg ons updatebericht over Private Network Access voor meer informatie.
  • Preflightverzoeken : Chrome verzendt preflightverzoeken vóór verzoeken om subresources van particuliere netwerken om te controleren op serverrechten (waarschuwingen in DevTools voor fouten sinds Chrome 104, worden afgedwongen in Chrome 130). Dit werd beschreven in Private Network Access: Introductie van preflights . Sinds Chrome 123 zal Chrome enkele CORS-headers weglaten, zoals Accept , als de preflight alleen wordt gemaakt en verzonden vanwege PNA.
  • Vrijstellingen van dezelfde oorsprong : Sinds Chrome 115 zijn verzoeken van dezelfde oorsprong van potentieel betrouwbare oorsprong vrijgesteld van PNA-beperkingen.

Uitgebreide bescherming: webwerkers

PNA-bescherming zal zich uitstrekken tot webwerkers (toegewijde werkers, gedeelde werkers en servicewerkers). Dit bevat:

  • Werkerscripts ophalen : vereist veilige contexten en preflights voor minder openbare IP-adressen. Waarschuwingen sinds Chrome 110, af te dwingen in Chrome 130.
  • Ophaalacties geïnitieerd door worker-scripts : Alle ophaalacties vanuit worker-scripts volgen dezelfde PNA-regels.

Vanaf Chrome 124 kunt u de handhaving testen met behulp van de volgende stappen:

  • Schakel chrome://flags/#private-network-access-ignore-worker-errors
  • Schakel chrome://flags/#private-network-access-respect-preflight-results

Uitgebreide bescherming: navigatie wordt opgehaald

PNA is ook van toepassing op navigatie-ophaalacties (iframes, pop-ups) vanwege hun potentiële gebruik bij CSRF-aanvallen. Chrome 123 begon waarschuwingen voor fouten weer te geven, terwijl handhaving gepland was voor Chrome 130.

Vanaf Chrome 124 kunt u de handhaving testen door:

  • Schakel chrome://flags/#private-network-access-ignore-navigation-errors uit
  • Schakel chrome://flags/#private-network-access-respect-preflight-results

Wanneer PNA een navigatieverzoek blokkeert, zien gebruikers een specifieke fout met de optie om het verzoek handmatig opnieuw te laden en toe te staan.

Wanneer PNA een navigatieverzoek blokkeert, zien gebruikers een specifieke fout met de optie om het verzoek handmatig opnieuw te laden en toe te staan.
Wanneer PNA een navigatieverzoek blokkeert, zien gebruikers een specifieke fout met de optie om het verzoek handmatig opnieuw te laden en toe te staan.

Wat moet u doen als uw website getroffen is?

Het bericht Private Network Access: introductie van preflights bevat richtlijnen. Belangrijk voor navigatieverzoeken:

  • Access-Control-Allow-Origin mag geen jokerteken zijn ( "*" ).
  • Access-Control-Allow-Credentials moet zijn ingesteld op "true" .

Wat is het volgende?

  • WebSockets : voorlopig vanaf Chrome 126 omvat PNA WebSocket-handshakes (eerst waarschuwingen).
  • Volledige handhaving : alle PNA-beperkingen worden voorlopig afgedwongen (het blokkeren van niet-conforme verzoeken) in Chrome 130. Gebruikers krijgen een site-instelling om PNA voor vertrouwde sites te overschrijven.

Feedback voor gebruiksscenario's voor privénetwerken

Als u een website host op een particulier netwerk waarvoor verzoeken van openbare netwerken nodig zijn, wil het Chrome-team uw feedback! Dien een probleem in bij Chromium Issue Tracker (onderdeel: Blink>SecurityFeature>CORS>PrivateNetworkAccess).

Foto door Jakub Żerdzicki op Unsplash