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

На многих других платформах, таких как Android , iOS и MacOS, есть разрешение на доступ к локальной сети. Например, вы могли предоставить это разрешение приложению Google Home при настройке новых устройств Google TV и Chromecast.
Какие виды запросов затронуты?
На первом этапе обеспечения доступа к локальной сети мы рассматриваем «запрос к локальной сети» как любой запрос из общедоступной сети к локальной сети или к точке назначения замыкания (loopback).
Локальная сеть — это любой адрес назначения, который разрешается в адреса, зарезервированные для локального использования. Например, частные IPv4-адреса, указанные в разделе 3 RFC1918 (например, 192.168.0.0/16 ), префикс «локального канала» IPv4 ( 169.254.0.0/16 ), определенный в RFC3927 , префикс «уникального локального адреса» IPv6 ( fc00::/7 ), определенный в разделе 3 RFC4193 , префикс «локального канала» IPv6 ( fe80::/10 ), определенный в разделе 2.5.6 RFC4291 , или IPv4-отображенный IPv6-адрес ( ::ffff:0:0/96 ), где сам отображенный IPv4-адрес является локальным.
Loopback — это любой адрес назначения, который разрешается в локальный компьютер (т.е., интерфейс «loopback»), например, префикс loopback IPv4 ( 127.0.0.0/8 ), определенный в разделе 3.2.1.3 RFC1122 , или loopback IPv6 ( ::1/128 ), определенный в разделе 2.5.3 RFC4291 .
Полное соответствие IP-адресов адресным пространствам см. в таблице в спецификации доступа к локальной сети .
Общедоступная сеть — это любое другое место назначения.
Поскольку разрешение на доступ к локальной сети ограничено защищенными контекстами, а перевод локальных сетевых устройств на 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.
- Для обработки запросов к локальной сети от сервисных работников и работников, использующих общие ресурсы, необходимо, чтобы источнику запроса работника было предварительно предоставлено разрешение на доступ к локальной сети.
- Если ваше приложение отправляет запросы к локальной сети через сервис-воркер, вам потребуется отдельно инициировать запрос к локальной сети из вашего приложения, чтобы вызвать запрос на разрешение. (Мы работаем над способом, позволяющим ворккерам запускать запрос на разрешение при наличии активного документа — см. crbug.com/404887282 .)
Chrome 139 и далее
Наша цель — как можно скорее внедрить поддержку доступа к локальной сети. Понимая, что некоторым сайтам может потребоваться дополнительное время для обновления аннотаций доступа к локальной сети, мы добавим пробный период, позволяющий сайтам временно отказаться от требования использования безопасных контекстов, прежде чем мы включим поддержку доступа к локальной сети по умолчанию. Это должно обеспечить более понятный путь миграции для разработчиков, особенно если вы используете доступ к ресурсам локальной сети по протоколу HTTP (поскольку такие запросы будут блокироваться как запросы смешанного контента, если они поступают со страницы HTTPS в браузерах, которые еще не поддерживают исключение для смешанного контента в рамках доступа к локальной сети).
Мы также добавим корпоративную политику Chrome для управления тем, какие сайты могут, а какие не могут отправлять запросы в локальную сеть (предварительно предоставляя или запрещая разрешение этим сайтам). Это позволит управляемым установкам Chrome, например, в корпоративных средах, избегать отображения предупреждения для известных сценариев использования или дополнительно ограничить доступ сайтов к запросу разрешения.
Мы планируем продолжить интеграцию разрешения на доступ к локальной сети с различными функциями, позволяющими отправлять запросы в локальную сеть. Например, в ближайшее время мы планируем добавить поддержку доступа к локальной сети для соединений WebSockets, WebTransport и WebRTC.
Более подробная информация будет предоставлена по мере приближения к полноценному запуску локального сетевого доступа в Chrome.
Требуется обратная связь.
Предыдущие отзывы о разработке доступа к частной сети оказались невероятно ценными и помогли нам разработать новый подход к управлению правами доступа к локальной сети. Мы хотели бы еще раз поблагодарить всех, кто принимал участие в этом процессе на протяжении многих лет.
Если вы разрабатываете веб-сайт или являетесь его пользователем, и для его работы требуется подключение к локальной сети пользователя или к программному обеспечению, работающему локально на компьютере пользователя, команда Chrome заинтересована в ваших отзывах и примерах использования. Вы можете помочь двумя способами:
- Перейдите по адресу
chrome://flags#local-network-access-check, установите флаг в значение "Включено (блокировка)" и проверьте, корректно ли ваш веб-сайт отображает запрос на предоставление нового разрешения (и работает ли он как положено после предоставления разрешения). - Если у вас возникнут какие-либо проблемы или вы захотите что-то посоветовать, создайте заявку в системе отслеживания ошибок Chromium или в нашем репозитории GitHub со спецификацией LNA . Chrome будет рад услышать ваше мнение.