Sec-WebSocket-Key 标头

信息安全 网络套接字
2021-09-06 19:42:24

谁能解释我在 WebSocket 握手地址中攻击了Sec-WebSocket-Key吗?

我在 RFC 中不理解它,在谷歌上也不理解。

2个回答

该协议的维基百科描述 ( https://en.m.wikipedia.org/wiki/WebSocket ) 似乎总结得最好。

去引用:

除了 Upgrade 标头之外,客户端还发送一个包含 base64 编码的随机字节的 Sec-WebSocket-Key 标头,服务器使用 Sec-WebSocket-Accept 标头中的密钥哈希值进行回复。这是为了防止缓存代理重新发送以前的 WebSocket 会话,[25] 并且不提供任何身份验证、隐私或完整性。散列函数将固定字符串 258EAFA5-E914-47DA-95CA-C5AB0DC85B11(一个 GUID)附加到来自 Sec-WebSocket-Key 标头的值(未从 base64 解码),应用 SHA-1 散列函数,并对结果使用base64。

编辑:感谢 Steffen 删除了关于重放保护的声明

来自IETF的WebSockets FAQ :

通过让客户端发送一个编码的随机数并让服务器给出一个只能由 WebSocket 服务器生成的响应,客户端可以验证他们确实在与 WebSocket 服务器而不是在与某种其他类型的服务器通信。...

因此,主要思想是 WebSockets 不能用于与真正的套接字通信,例如邮件服务器等。这很重要,因为通常可以通过浏览器访问内部受信任的服务器并以这种方式受到攻击或滥用(发送垃圾邮件)。

除此之外,它还确保没有行为不端的代理返回旧的缓存内容,而不是将 WebSockets 连接直接传递给服务器。