为什么websocket请求中的服务器必须回答质询?
我正在阅读websocket规范,它说: 最后,服务器必须向客户机证明它收到了 客户端的WebSocket握手,因此服务器不接受 非WebSocket连接的连接。这可以防止 攻击者通过小心地发送WebSocket服务器来阻止其欺骗- 使用| XMLHttpRequest |或|表单|提交精心编制的数据包为什么websocket请求中的服务器必须回答质询?,websocket,Websocket,我正在阅读websocket规范,它说: 最后,服务器必须向客户机证明它收到了 客户端的WebSocket握手,因此服务器不接受 非WebSocket连接的连接。这可以防止 攻击者通过小心地发送WebSocket服务器来阻止其欺骗- 使用| XMLHttpRequest |或|表单|提交精心编制的数据包 我已经读了好几遍了,但我仍然不清楚为什么这是必要的。我认为这是为了防止两件事 >P>重放攻击,中间人捕获包并试图重新发送到服务器,因为服务器将请求不同的挑战,从而拒绝连接。 Http post和
我已经读了好几遍了,但我仍然不清楚为什么这是必要的。我认为这是为了防止两件事
我开始回答你的问题,意识到我对这段话的理解没有我想象的那么好。当/如果我得到答案,我将进行更新。质询响应机制强制服务器确保客户端是合法的WebSocket客户端,而不是执行有趣操作的脚本 质询在“Sec WebSocket密钥”HTTP头中发送。由于浏览器确保脚本不能设置“Sec-*”头,这会阻止脚本通过XMLHttpRequest打开WebSocket连接 如果服务器不必回答这个问题,那么一些懒惰的服务器可能会完全忽略“Sec WebSocket-*”头,从而使客户端不受恶意脚本的保护
这也可能是一种允许客户端验证它是否正在与WebSocket服务器通信的方法,但我认为这不是主要原因,因为服务器必须发送101交换协议状态代码以及“升级:WebSocket”头。例如,我认为一个主要原因是,如果在流行网站中嵌入了websocket脚本,就可以防止对服务器的攻击。你可以把你的整个用户群变成一个不情愿的僵尸网络
这当然不能阻止恶意用户对开放式websocket服务器进行攻击,至少我不这么认为,但它可以阻止对非websocket服务器的攻击。我想听听关于这方面的质疑。我找不到任何原因。如果挑战是针对客户端的,那么这些都是有效的答案,但实际上挑战是由服务器来回答的。啊,我不知道XHR头上的“sec-*”限制,但在规范中是这样的:验证客户端是合法的WebSocket客户端而不是做有趣事情的脚本有什么意义?