使用websocket连接时,对用户进行身份验证的可能方法有哪些?

Bur*_*ede 19 python authentication chat tornado websocket

示例场景:通过websocket连接的基于Web的多用户聊天应用程序.如何确保(或保证)此应用程序中的每个连接都属于某个经过身份验证的用户,并且"无法"被假用户模仿或在连接期间进行干预.

顺便说一下,我在服务器端使用tornado websocket实现基本的聊天室,并且已经为我的应用程序的非websocket部分进行了身份验证.

ps:假设经过身份验证的用户发布了他想要的内容,当其他用户打开项目的列表页面时,自动将其他用户添加到websocket侦听器列表中我希望每个用户能够单独以聊天室方式与项目的买方聊天但是一对一的聊天

and*_*der 18

首先,您应该记住两件关于WebSockets的事情:(a)它是一个不断发展的标准;(b)它的设计目的是与不受信任的客户合作.

您应该始终使用WebSockets进行的最重要和最重要的事情是检查它们的来源.如果原点不匹配,显然您不想处理该客户端,因此请忽略其请求.此外,请确保您使用的是"wss"安全WebSocket协议,而不是"ws"不安全协议.这将确保您的邮件已加密.

这样做的问题在于,这些信息可能会被欺骗.请参阅此博客文章,以快速演示此内容.

附加安全性:

  • 尝试发送盐渍令牌,将其盐渍/散列并发送回并在握手阶段进行验证.
  • 限制过于频繁发生的请求(就像IRC协议一样).如果用户在一秒钟内提交了10行或更多行,请忽略该用户.
  • 做一个快速的垃圾邮件检查(有很多算法) - 坚持光启发式,否则会给你的服务器带来负担.像"免费"或"伟哥"这样的词汇.为用户提供一个分数,表示他们是垃圾邮件或机器人的可能性.当它被破坏时,从服务器启动它们.

希望有所帮助!对不起,如果没有.这是我对StackOverflow的回答.:P


小智 -4

这就是websocket连接的全部目的。您可以通过握手协议来验证它们。有关更多信息,请参阅此处: https: //datatracker.ietf.org/doc/html/draft-ietf-hybi-thewebsocketprotocol-08