示例场景:通过websocket连接的基于Web的多用户聊天应用程序。如何确保(或保证)此应用程序中的每个连接都属于某个经过身份验证的用户,并且“无法”被假用户模仿或在连接期间进行干预。
顺便说一句,我在服务器端使用tornado websocket来实现基本的聊天室,并且已经为我的应用程序的非websocket部分进行了身份验证。
ps:假设经过身份验证的用户发布他想要的内容,当其他用户打开项目的列表页面时,自动将其他用户添加到websocket听众列表中我希望每个用户能够单独与该项目的买方聊天而不是聊天室的方式,但一对一的聊天
答案 0 :(得分:17)
首先,你应该记住两件关于WebSockets的事情:(a)它是一个不断发展的标准;(b)它旨在与不信任的客户合作。
您应该始终使用WebSockets进行的最重要和最重要的事情是检查它们的来源。如果原点不匹配,显然您不想处理该客户端,因此请忽略其请求。此外,请确保您使用的是“wss”安全WebSocket协议,而不是“ws”不安全协议。这将确保您的邮件已加密。
这样做的问题是,这些信息可能会被欺骗。请参阅this blog post以快速演示此内容。
附加安全:
希望有所帮助!对不起,如果没有。这是我对StackOverflow的回答。 :P
答案 1 :(得分:1)
我非常确定websocket连接会发送任何已在应用程序的非websocket连接中建立的cookie。您应该能够在Django的会话存储中查询连接的cookie并确定该套接字所属的用户。
退房:https://docs.djangoproject.com/en/1.3/topics/http/sessions/#configuring-the-session-engine
答案 2 :(得分:-4)
这是websocket连接的全部目的。您通过握手协议对它们进行身份验证。有关详细信息,请参阅此处 http://tools.ietf.org/html/draft-ietf-hybi-thewebsocketprotocol-08