Что такое доступ к частной сети?
Доступ к частной сети (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 блокирует навигационный запрос, пользователи увидят конкретную ошибку с возможностью вручную перезагрузить и разрешить запрос.
Что делать, если это затронуло ваш сайт?
Публикация «Доступ к частной сети: внедрение предварительной проверки» содержит рекомендации. Важно, для запросов навигации:
-
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