Опубликовано: 9 июня 2025 г.
Chrome добавляет новый запрос на разрешение для сайтов, которые подключаются к локальной сети пользователя, как часть проекта спецификации Local Network Access . Цель состоит в том, чтобы защитить пользователей от атак с подделкой межсайтовых запросов (CSRF), нацеленных на маршрутизаторы и другие устройства в частных сетях, а также ограничить возможность сайтов использовать эти запросы для идентификации локальной сети пользователя.
Чтобы понять, как это изменение влияет на веб-экосистему, команда Chrome ищет отзывы от разработчиков, которые создают веб-приложения, которые полагаются на создание подключений к локальной сети пользователя или к программному обеспечению, работающему локально на компьютере пользователя. Из Chrome 138 вы можете согласиться на эти новые ограничения, перейдя по адресу chrome://flags/#local-network-access-check
и установив флаг на «Включено (Блокировка)».
Что такое доступ к локальной сети?
Local Network Access ограничивает возможность веб-сайтов отправлять запросы серверам в локальной сети пользователя (включая серверы, работающие локально на компьютере пользователя), требуя от пользователя предоставить разрешение сайту, прежде чем такие запросы могут быть сделаны. Возможность запрашивать это разрешение ограничена безопасными контекстами.

Многие другие платформы, такие как Android , iOS и MacOS, имеют разрешение на доступ к локальной сети. Например, вы могли предоставить это разрешение на доступ к локальной сети приложению Google Home при настройке новых устройств Google TV и Chromecast.
Какие типы запросов затронуты?
На первом этапе доступа к локальной сети мы считаем «запросом локальной сети» любой запрос из общедоступной сети в локальную сеть или пункт назначения обратной связи.
Локальная сеть — это любой пункт назначения, который разрешается в частное адресное пространство, определенное в разделе 3 RFC1918 в IPv4 (например, 192.168.0.0/16
), сопоставленный с IPv4 адрес IPv6, где сопоставленный адрес IPv4 сам по себе является частным, или адрес IPv6 за пределами подсетей ::1/128
, 2000::/3
и ff00::/8
.
Обратная петля — это любой пункт назначения, который разрешается в пространство «обратной петли» ( 127.0.0.0/8
), определенное в разделе 3.2.1.3 RFC1122 IPv4, пространство «локальной ссылки» ( 169.254.0.0/16
), определенное в RFC3927 IPv4, префикс «Уникальный локальный адрес» ( fcc00::/7
), определенный в разделе 3 RFC4193 IPv6, или префикс «локальной ссылки» ( fe80::/10
), определенный в разделе 2.5.6 RFC4291 IPv6.
Общедоступная сеть — это любое другое место назначения.
Поскольку разрешение на доступ к локальной сети ограничено безопасными контекстами, и может быть сложно перенести локальные сетевые устройства на HTTPS, запросы локальной сети с разрешением теперь будут освобождены от проверок смешанного содержимого, если Chrome знает, что запросы будут отправлены в локальную сеть, до разрешения назначения. Chrome знает, что запрос отправляется в локальную сеть, если:
- Имя хоста запроса представляет собой частный IP-адрес (например,
192.168.0.1
). - Имя хоста запроса — домен
.local
. - Вызов
fetch()
аннотируется опциейtargetAddressSpace: "local".
// Example 1: Private IP literal is exempt from mixed content.
fetch("http://192.168.0.1/ping");
// Example 2: `.local` domain is exempt from mixed content.
fetch("http://router.local/ping");
// Example 3: Public domain is not exempt from mixed content,
// even if it resolves to a local network address.
fetch("http://example.com/ping");
// Example 4: Adding the `targetAddressSpace` option flags that
// the request will go to the local network, and is thus exempt
// from mixed content.
fetch("http://example.com/ping", {
targetAddressSpace: "local",
});
Что меняется в Chrome
Хром 138
Наша первоначальная версия Local Network Access готова к тестированию в Chrome 138. Пользователи могут включить новый запрос на разрешение, установив chrome://flags#local-network-access-check
на «Включено (Блокировка)». Это поддерживает запуск запроса на разрешение Local Network Access для запросов, инициированных с помощью JavaScript fetch()
API, загрузку подресурсов и навигацию по подфреймам.
Демонстрационный сайт доступен по адресу https://local-network-access-testing.glitch.me/ для запуска различных форм локальных сетевых запросов.
Известные проблемы и ограничения
- Новый запрос на разрешение в настоящее время реализован только в Chrome для ПК. Мы активно работаем над его переносом в Chrome для Android. (Отслеживается в crbug.com/400455013 .)
- Подключения WebSockets ( crbug.com/421156866 ), WebTransport ( crbug.com/421216834 ) и WebRTC ( crbug.com/421223919 ) к локальной сети пока не ограничены разрешением LNA.
- В настоящее время для запросов к локальной сети от Service Workers требуется, чтобы источнику Service Worker ранее было предоставлено разрешение на доступ к локальной сети.
- Если ваше приложение отправляет запросы локальной сети из Service Worker, вам в настоящее время необходимо будет отдельно инициировать запрос локальной сети из вашего приложения, чтобы инициировать запрос на разрешение. (Мы работаем над тем, чтобы Worker мог инициировать запрос на разрешение, если доступен активный документ — см . crbug.com/404887282 .)
Chrome 139 и выше
Мы намерены как можно скорее отправить Local Network Access. Понимая, что некоторым сайтам может потребоваться дополнительное время для обновления аннотаций Local Network Access, мы добавим Origin Trial, чтобы позволить сайтам временно отказаться от требования безопасных контекстов, прежде чем мы отправим Local Network Access по умолчанию. Это должно обеспечить разработчикам более понятный путь миграции, особенно если вы полагаетесь на доступ к ресурсам локальной сети по HTTP (поскольку эти запросы будут блокироваться как смешанный контент, если они запрашиваются со страницы HTTPS в браузерах, которые еще не поддерживают исключение смешанного контента Local Network Access).
Мы также добавим корпоративную политику Chrome для контроля того, какие сайты могут и не могут делать запросы локальной сети (предварительное предоставление или предварительное отклонение разрешения для этих сайтов). Это позволит управляемым установкам Chrome, например, в корпоративных настройках, избегать отображения предупреждения для известных предполагаемых случаев использования или еще больше блокировать и вообще не позволять сайтам запрашивать разрешение.
Мы планируем продолжить интеграцию разрешения Local Network Access с различными функциями, которые могут отправлять запросы в локальную сеть. Например, мы планируем вскоре выпустить Local Network Access для подключений WebSockets, WebTransport и WebRTC.
Мы поделимся дополнительной информацией по мере приближения момента полного запуска Local Network Access в Chrome.
Нужна обратная связь
Предыдущие отзывы о разработке Private Network Access были невероятно ценными, направляя нас к нашему новому подходу к разрешениям Local Network Access. Мы хотели бы еще раз поблагодарить всех, кто принимал участие в течение многих лет.
Если вы разрабатываете или являетесь пользователем веб-сайта, который полагается на создание подключений к локальной сети пользователя или программного обеспечения, работающего локально на компьютере пользователя, команда Chrome заинтересована в ваших отзывах и вариантах использования. Есть две вещи, которые вы можете сделать, чтобы помочь:
- Перейдите по адресу
chrome://flags#local-network-access-check
, установите флаг на «Включено (Блокировка)» и проверьте, правильно ли ваш веб-сайт выдает запрос на новое разрешение (и работает ли он должным образом после предоставления разрешения). - Если у вас возникли какие-либо проблемы или есть отзывы, отправьте сообщение в Chromium Issue Tracker или в наш репозиторий LNA Explainer GitHub . Chrome будет рад услышать от вас.