Socket.io:检查每个事件或连接的身份验证

时间:2019-06-25 08:01:32

标签: node.js websocket socket.io

我想确保用户在发送聊天之前已登录。为此,我应该使用在每个连接上触发的身份验证中间件还是在每个事件上触发的中间件?

我担心如果使用前者,用户可以先登录然后注销(而不会丢失连接)并在未登录时继续发送消息)。

但是,浏览所有不同的stackoverflow帖子,没有人提到此问题。谁能告诉我常用的方法是什么?

1 个答案:

答案 0 :(得分:0)

根据问题后面的评论,您可以配置两项以更好地保护用户。

调整您的socket.io实现:

  1. 升级您的socket.io实现以使用2.x。
  2. 使用'socket.io#origins'配置来消除 任何域的默认CORS通配符。
  3. 在socket.io连接中使用经过身份验证的会话。看到 'socket.io#adapter'或'session.socket.io'模块替代。

调整您的网站安全标题:

  1. 通过以下方式运行您的网站(如果公开) https://securityheaders.com测试您当前的实现。
  2. 请使用OWASP上的指南,以获取更多有关以下方面的选择: 保护您的网站(例如此网站)与使用较新的网站有关 浏览器中可用的安全标头。 https://www.owasp.org/index.php/List_of_useful_HTTP_headers

源:https://security.stackexchange.com/questions/89660/how-to-secure-my-node-js-socket-io-application-properly