【发布时间】:2015-10-12 09:43:31
【问题描述】:
我正在寻找使用 WebSockets 与我们的服务器通信来实现 web(角度)和 iPhone 应用程序。在过去使用 HTTP 请求时,我们使用请求数据、url、时间戳等的哈希值来验证和保护请求。
据我所知,我们无法使用 WebSockets 请求发送标头,因此我想知道如何保护每个请求。
有人有什么想法或好的做法吗?
【问题讨论】:
-
好问题。我还没有达到使用 websockets 的目的,但这是我迟早想做的事情。我确实找到了这个:auth0.com/blog/2014/01/15/auth-with-socket-io
-
至少从 https 开始(实际上是 WWS)。 @Rob 的链接是您的下一步。
-
@Rob 谢谢,这是一个开始。但我想要一种可以防止中间人攻击的方法。我真的找不到解决这个问题的方法,过去我将整个请求与请求数据一起散列,因此如果有人更改了请求,服务器就会知道。我想我可以将数据序列化为字符串并将哈希作为 URL 的一部分传递,但不确定这是否安全/良好做法
-
一旦建立了 TLS 连接 (wss://),只要客户端验证了服务器的证书,并且服务器安全地验证了客户端,那么这个特定的连接对于 MitM 来说是安全的。 WS 服务器可以使用标头 来帮助验证客户端...当然,所有带有owasp.org/index.php/Authentication_Cheat_Sheet 的规则都完全适用;从不接受非 TLS 连接作为经过身份验证,并且身份验证 cookie 必须是仅 TLS 和仅 HTTP:对客户端的 javascript 不可用。
-
另外,如果您确实在 cookie 中使用了会话令牌,另请参阅 owasp.org/index.php/Session_Management_Cheat_Sheet 作为安全身份验证的额外必要条件,同时混合 WebSocket 和 HTTP 流量......(另外,没有空间在上面添加:标头和cookie仅对WS服务器在握手期间可用,因此如果会话令牌因任何原因发生更改(每次用户的身份验证状态更改时都应该更改)WS必须断开连接并重新启动)。
标签: security authentication websocket