正在为 Chrome 开发用于直接 TCP 和 UDP 通信的 API

谷歌 着手 在 Chrome 中实现新的 API 原始插座,它允许 Web 应用程序使用 TCP 和 UDP 协议建立直接网络连接。 2015年,W3C联盟就已经尝试标准化API”TCP 和 UDP 套接字》,但工作组成员未能达成共识,该API的开发被停止。

添加新 API 的必要性是通过提供与使用在 TCP 和 UDP 之上运行的本机协议且不支持通过 HTTPS 或 WebSocket 进行通信的网络设备进行交互的能力来解释的。 值得注意的是,Raw Sockets API 将补充浏览器中已有的低级编程接口 WebUSB、WebMIDI 和 WebBluetooth,从而允许与本地设备进行交互。

为了避免对安全性产生负面影响,原始套接字 API 将仅允许在用户同意的情况下发起的网络调用,并且仅限于用户允许的主机列表。 用户必须明确确认新主机的第一次连接尝试。 使用特殊标志,用户可以禁用对同一主机的重复连接的重复操作确认请求的显示。 为了防止 DDoS 攻击,通过原始套接字的请求强度将受到限制,并且只有在用户与页面交互后才能发送请求。 从未经用户批准的主机接收的 UDP 数据包将被忽略,并且不会到达 Web 应用程序。

初始实现不提供侦听套接字的创建,但将来可以提供调用来接受来自本地主机或已知主机列表的传入连接。 还提到需要防范攻击”DNS 重新绑定“(攻击者可以在 DNS 级别更改用户批准的域名的 IP 地址并获得对其他主机的访问权限)。 计划阻止对解析为 127.0.0.0/8 的域和 Intranet 网络的访问(建议仅当在确认表单中明确输入 IP 地址时才允许访问 localhost)。

实施新 API 时可能出现的风险之一是它可能会被其他浏览器制造商拒绝,这可能会导致兼容性问题。 Mozilla Gecko 和 WebKit 引擎的开发人员仍然 没有成功 其对原始套接字 API 的可能实现的立场,但 Mozilla 此前曾针对 Firefox OS (B2G) 项目提出建议 类似的API。 如果第一阶段获得批准,Raw Sockets API 计划在 Chrome 操作系统上激活,然后才提供给其他系统上的 Chrome 用户。

网页开发人员 积极 对新的 API 做出了回应,并就其在 XMLHttpRequest、WebSocket 和 WebRTC API 不够用的领域中的应用表达了许多新的想法(从为 SSH、RDP、IMAP、SMTP、IRC 和打印协议创建浏览器客户端,到开发分布式 P2P 系统) DHT(分布式哈希表)、IPFS 支持以及与物联网设备特定协议的交互)。

来源: opennet.ru

添加评论