我希望使用 WebSocket 为我的应用程序提供行程间通讯(Daemon <-> WebGUI 和 Daemon <-> FatClient,等等)。在测试期间,我尝试通过 WebSocket.org (http://www.websocket.org/echo.html)上的 JavaScript WebSocket 客户端连接到本地运行的 web socket 服务器(ws://localhost: 1234)。
我现在的问题是:
为什么这是可能的? 在浏览器中没有实现跨源策略(这里: Linux 上的 FF29) ?
我这么问是因为如果 websocket.org 是邪恶的,它可能会尝试与我的本地 WS 服务器通信,并将它从本地主机收到的每条消息重定向到任何其他服务器:
Local WebSocket Server Browser Evil Web Server at ws://localhost:1234 at http://evil.tld | | | | |------[GET /]--------->| | |<-----[HTML+EvilJS]----| |<------[connect ws://..]----| | |<----[some communication]-->| | | |----[evil forward]---->| | | |
我还没有测试整个用例,但是通过 websocket.org 交付的 JS 连接到 ws://localhost 肯定是可以工作的。