Доступ к частной сети: расширенная защита веб-работников и навигации по сети.

Джонатан Хао
Jonathan Hao

Что такое доступ к частной сети?

Доступ к частной сети (PNA, ранее известный как CORS-RFC1918 и кратко «Доступ к локальной сети») — это функция безопасности, которая ограничивает возможность веб-сайтов отправлять запросы на серверы в частных сетях. Это помогает защитить пользователей и внутренние сети от потенциальных атак, таких как подделка межсайтовых запросов (CSRF). Chrome постепенно внедряет PNA, и защита будет расширена в следующих выпусках.

Ключевые средства защиты PNA (с их текущим статусом)

  • Безопасные контексты . Только безопасные контексты могут отправлять запросы на подресурсы частной сети (применяется начиная с Chrome 94). Подробную информацию можно найти в нашем обновленном сообщении о доступе к частной сети .
  • Предварительные запросы : Chrome отправляет предварительные запросы перед запросами на подресурсы частной сети для проверки разрешений сервера (предупреждения в DevTools о сбоях, начиная с Chrome 104, которые будут применяться в Chrome 130). Это было описано в разделе «Доступ к частной сети: введение в предварительные проверки» . Начиная с Chrome 123, Chrome будет пропускать некоторые заголовки CORS, такие как Accept , если предварительная проверка создается и отправляется только из-за PNA.
  • Исключения для одного и того же источника . Начиная с Chrome 115, запросы одного и того же источника из потенциально заслуживающих доверия источников освобождаются от ограничений PNA.

Расширенная защита: веб-работники

Защита PNA будет распространяться на веб-работников (выделенных работников, общих работников и сервисных работников). Это включает в себя:

  • Получение рабочих сценариев : требуются безопасные контексты и предварительная проверка для менее общедоступных IP-адресов. Предупреждения, начиная с Chrome 110, будут применяться в Chrome 130.
  • Выборки, инициированные рабочими сценариями . Все выборки из рабочих сценариев подчиняются одним и тем же правилам PNA.

Начиная с Chrome 124, вы можете протестировать принудительное применение, выполнив следующие действия:

  • Отключить chrome://flags/#private-network-access-ignore-worker-errors
  • Включить chrome://flags/#private-network-access-respect-preflight-results

Расширенная защита: выборка навигационных данных.

PNA также применяется к выборкам навигации (iframe, всплывающие окна) из-за их потенциального использования в атаках CSRF. Chrome 123 начал показывать предупреждения о сбоях, а для Chrome 130 запланировано принудительное внедрение.

Начиная с Chrome 124, вы можете проверить соблюдение требований следующим образом:

  • Отключить chrome://flags/#private-network-access-ignore-navigation-errors
  • Включить chrome://flags/#private-network-access-respect-preflight-results

Когда PNA блокирует навигационный запрос, пользователи увидят конкретную ошибку с возможностью вручную перезагрузить и разрешить запрос.

Когда PNA блокирует навигационный запрос, пользователи увидят конкретную ошибку с возможностью вручную перезагрузить и разрешить запрос.
Когда PNA блокирует навигационный запрос, пользователи увидят конкретную ошибку с возможностью вручную перезагрузить и разрешить запрос.

Что делать, если это затронуло ваш сайт?

Публикация «Доступ к частной сети: внедрение предварительной проверки» включает рекомендации. Важно, для запросов навигации:

  • Access-Control-Allow-Origin не может быть подстановочным знаком ( "*" ).
  • Access-Control-Allow-Credentials должно быть установлено значение "true" .

Что дальше?

  • WebSockets : ориентировочно начиная с Chrome 126, PNA будет охватывать рукопожатия WebSocket (сначала предупреждения).
  • Полное соблюдение : все ограничения PNA будут предварительно применены (блокировка несоответствующих запросов) в Chrome 130. У пользователей будет настройка сайта, позволяющая переопределить PNA для доверенных сайтов.

Отзывы о вариантах использования частной сети

Если вы размещаете веб-сайт в частной сети, которому требуются запросы из общедоступных сетей, команда Chrome хочет получить ваши отзывы! Сообщите о проблеме в Chromium Issue Tracker (компонент: Blink>SecurityFeature>CORS>PrivateNetworkAccess).

Фото Якуба Жерджицкого на Unsplash