Для Chrome развивается API для прямых TCP и UDP коммуникаций

Компания Google приступила к реализации в Chrome нового API Raw Sockets, позволяющего web-приложениям устанавливать прямые сетевые соединения с использованием протоколов TCP и UDP. В 2015 году консорциумом W3C уже была предпринята попытка стандартизации API «TCP and UDP Socket«, но участники рабочей группы не достигли консенсуса и разработка данного API была остановлена.

Необходимость добавления нового API объясняется предоставлением возможности взаимодействия с сетевыми устройствами, которые используют собственные протоколы, работающие поверх TCP и UDP, и не поддерживают взаимодействие через HTTPS или WebSockets. Отмечается, что API Raw Sockets дополнит уже имеющиеся в браузере низкоуровневые программные интерфейсы WebUSB, WebMIDI и WebBluetooth, позволяющие взаимодействовать с локальными устройствами.

Для исключения негативного влияния на безопасность API Raw Sockets будет допускать сетевые обращения только инициированные с согласия пользователя и ограниченные списком разрешённых пользователем хостов. Пользователь должен будет явно подтверждать первую попытку соединения для нового хоста. При помощи специального флага пользователь сможет отключить вывод повторных запросов подтверждения операции при повторных соединениях к тому же хосту. Для предотвращения DDoS-атак интенсивность обращений через Raw Sockets будет лимитирована, а отправка запросов возможно только после взаимодействия пользователя со страницей. UDP-пакеты, полученные с хостов, не одобренных пользователем, будут игнорироваться и не доходить до web-приложения.

Начальная реализация не предусматривает создания слушающих сокетов, но в будущем не исключается предоставление вызовов для приёма входящих соединений с localhost или списка известных хостов. Также упоминается необходимость защиты от атак «DNS rebinding» (атакущий может на уровне DNS сменить IP-адрес для одобренного пользователем доменного имени и получить доступ к другим хостам). Доступ к доменам, резолвящимся в 127.0.0.0/8 и интранет сети планируется блокировать (обращения к localhost предлагается разрешить только при явном вводе IP-адреса в форме подтверждения).

Среди рисков, которые могут возникнуть при реализации нового API, отмечается его возможное неприятие производителями других браузеров, что может привести к проблемам с совместимостью. Разработчики движков Mozilla Gecko и WebKit пока не выработали свою позицию по поводу возможной реализации API Raw Sockets, но компания Mozilla ранее для проекта Firefox OS (B2G) уже предлагала похожий API. В случае утверждения на первом этапе API Raw Sockets планируется активировать в Chrome OS, а уже потом предложить пользователям Chrome в других системах.

Web-разработчики положительно отозвались о новом API и высказали много новых идей об его применении в областях, в которых API XMLHttpRequest, WebSocket и WebRTC недостаточно (от создания браузерных клиентов для SSH, RDP, IMAP, SMTP, IRC и протоколов вывода на печать до разработки распределённых P2P-систем с DHT (Distributed Hash Table), поддержки IPFS и взаимодействия со специфичными протоколами IoT-устройств).

Источник: opennet.ru

Добавить комментарий