正在為 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

添加評論