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

标签 security html websocket

旧的和被取代的 WebSocket 规范草案 75 没有指定 HTTP 请求 header Sec-WebSocket-Key1 和 Sec-WebSocket-Key2。为什么最新草案包括这些内容,以及在提高安全性方面有哪些内容?

最佳答案

这是我能弄清楚的:这些新字段用于防止跨协议(protocol)攻击。假设一些恶意 JavaScript 正在 Web 浏览器中运行,试图连接到非 HTTP、非 WebSocket 服务器(例如 FTP、telnet、SSH)。在草案 75 中,握手仅包括客户端发送 WebSocket 握手 header ,而服务器什么也不回复。之后,客户端可以发送 \x00...\xFF 帧消息。因此,客户端中的恶意 JavaScript 代码能够连接到非 WebSocket 服务器(例如 telnet),尝试登录并在那里运行命令。引入Sec-WebSocket-Key1后,除非服务器返回Sec-WebSocket-Key1等的MD5校验和,否则WebSocket连接尝试将失败。强制非WebSocket (例如 telnet)服务器几乎不可能做到这一点,尤其是因为 JavaScript 代码无法控制 Sec-WebSocket-Key1 等。

关于security - 为什么没有 Sec-WebSocket-Key1 的 WebSockets 不安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3595282/

相关文章:

ios - 使用 SecKeyEncrypt 的 RSA 加密给出错误 -4 (errSecUnimplemented)

c# - 如何 - 从进程列表中取消列出我的程序..?

PHP 数据库安全

html - 如何在两个水平 DIV 中拆分屏幕,这两个 DIV 都有自己的滚动条? (给出的示例链接)

security - 密码哈希值的非随机盐

javascript - 获取鼠标位置下的div列表

javascript - 如何获取所选选项的值

haskell - 在 IO monad 中使用 monad

Tomcat 服务器访问限制导致 Websocket 无法连接

Wildfly 中的 Spring Boot Websockets