为什么没有Sec-WebSocket-Key1的WebSockets不安全?

pts*_*pts 9 security html5 websocket

旧的和取代的WebSocket规范草案75没有指定HTTP请求标头Sec-WebSocket-Key1和Sec-WebSocket-Key2.为什么最新草案包含这些内容,以及增强安全性方面的内容?

pts*_*pts 7

以下是我能想到的:这些新字段可以防止跨协议攻击.让我们假设一些恶意JavaScript在Web浏览器中运行,试图连接到非HTTP,非WebSocket服务器(例如FTP,telnet,SSH).对于草案75,握手只包括发送WebSocket握手头的客户端,而服务器则没有回复.之后,客户端可以发送\x00...\xFF框架消息.因此,客户端中的恶意JavaScript代码可以连接到非WebSocket服务器(例如telnet),尝试登录并在那里运行命令.经过二段的WebSocket-键1已经出台,除非服务器返回的MD5校验和WebSocket的连接尝试失败二段的WebSocket-键1强制非WebSocket(例如telnet)服务器这样做几乎是不可能的,特别是因为JavaScript代码无法控制Sec-WebSocket-Key1等.