Опубликовано: 9 июня 2025 г.
Chrome добавляет новый запрос разрешения для сайтов, подключающихся к локальной сети пользователя, в рамках спецификации Local Network Access . Целью этого является защита пользователей от атак с подделкой межсайтовых запросов (CSRF), нацеленных на маршрутизаторы и другие устройства в частных сетях, а также ограничение возможностей сайтов использовать эти запросы для идентификации локальной сети пользователя.
Чтобы понять, как это изменение влияет на веб-экосистему, команда Chrome ищет отзывы разработчиков веб-приложений, использующих подключение к локальной сети пользователя или к программному обеспечению, работающему локально на его компьютере. Начиная с Chrome 138, вы можете включить эти новые ограничения, перейдя по ссылке chrome://flags/#local-network-access-check
и установив флаг «Включено (Блокировка)».
Что такое доступ к локальной сети?
Доступ к локальной сети ограничивает возможность веб-сайтов отправлять запросы серверам в локальной сети пользователя (включая серверы, работающие локально на компьютере пользователя), требуя от пользователя предоставления разрешения сайту перед выполнением таких запросов. Возможность запроса этого разрешения ограничена безопасным контекстом.
Многие другие платформы, такие как 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.
Полное сопоставление IP-адресов с адресными пространствами см. в таблице в спецификации Local Network Access .
Публичная сеть — это любой другой пункт назначения.
Поскольку разрешение на доступ к локальной сети ограничено безопасными контекстами, а миграция локальных сетевых устройств на 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
Наша первоначальная версия функции «Доступ к локальной сети» готова к тестированию в Chrome 138. Пользователи могут включить новый запрос разрешения, установив параметр chrome://flags#local-network-access-check
в значение «Включено (Блокировка)». Это позволяет запрашивать разрешение на доступ к локальной сети для запросов, инициированных с помощью API JavaScript fetch()
, загрузки подресурсов и навигации по подфреймам.
Демонстрационный сайт доступен по адресу https://lna-testing.notyetsecure.com/ для запуска различных форм запросов локальной сети.
Известные проблемы и ограничения
- Подключения WebSockets ( crbug.com/421156866 ), WebTransport ( crbug.com/421216834 ) и WebRTC ( crbug.com/421223919 ) к локальной сети пока не ограничены разрешением LNA.
- Для запросов локальной сети от Service Workers и Shared Workers требуется, чтобы источнику Worker ранее было предоставлено разрешение на доступ к локальной сети.
- Если ваше приложение отправляет запросы по локальной сети к сервисному работнику, вам потребуется отдельно инициировать запрос по локальной сети из вашего приложения, чтобы инициировать запрос на разрешение. (Мы работаем над тем, чтобы работники могли инициировать запрос на разрешение, если доступен активный документ — см . crbug.com/404887282 .)
Chrome 139 и выше
Мы намерены как можно скорее выпустить Local Network Access. Учитывая, что некоторым сайтам может потребоваться дополнительное время для обновления аннотаций Local Network Access, мы добавим пробную версию Origin, которая позволит сайтам временно отказаться от требования безопасного контекста, прежде чем Local Network Access будет запущен по умолчанию. Это должно обеспечить разработчикам более понятный путь миграции, особенно если вы используете доступ к ресурсам локальной сети по HTTP (поскольку эти запросы будут блокироваться как смешанный контент, если они запрашиваются со страницы HTTPS в браузерах, которые пока не поддерживают исключение для Local Network Access).
Мы также добавим корпоративную политику Chrome, которая будет контролировать, какие сайты могут или не могут отправлять запросы к локальной сети (предварительно предоставляя или запрещая разрешение этим сайтам). Это позволит управляемым установкам Chrome, например, установленным в корпоративных средах, не показывать предупреждение для известных случаев использования или ещё больше блокировать и полностью запрещать сайтам запрашивать разрешение.
Мы планируем продолжить интеграцию разрешения «Доступ к локальной сети» с различными функциями, которые позволяют отправлять запросы в локальную сеть. Например, мы планируем вскоре реализовать разрешение «Доступ к локальной сети» для подключений WebSockets, WebTransport и WebRTC.
Мы поделимся дополнительной информацией по мере приближения момента полного запуска Local Network Access в Chrome.
Требуется обратная связь
Предыдущие отзывы о разработке Private Network Access оказались невероятно ценными и помогли нам в разработке нового подхода к управлению разрешениями на доступ к локальной сети. Мы хотели бы ещё раз поблагодарить всех, кто участвовал в разработке на протяжении многих лет.
Если вы разрабатываете или используете веб-сайт, который использует подключение к локальной сети пользователя, или программное обеспечение, работающее локально на компьютере пользователя, команда Chrome заинтересована в ваших отзывах и примерах использования. Вы можете помочь двумя способами:
- Перейдите по адресу
chrome://flags#local-network-access-check
, установите флаг на «Включено (Блокировка)» и проверьте, корректно ли ваш веб-сайт выдает запрос на новое разрешение (и работает ли он должным образом после предоставления разрешения). - Если у вас возникнут какие-либо проблемы или вы захотите оставить отзыв, сообщите об этом в Chromium Issue Tracker или в нашем репозитории спецификации LNA на GitHub . Chrome будет рад узнать ваше мнение.