Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js Socket.io:检查每个事件或连接的身份验证_Node.js_Websocket_Socket.io - Fatal编程技术网

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

Node.js Socket.io:检查每个事件或连接的身份验证,node.js,websocket,socket.io,Node.js,Websocket,Socket.io,我想确保用户在发送聊天之前已登录。为此,我应该使用在每个连接上触发的身份验证中间件,还是使用在每个事件上触发的中间件 我担心如果我使用前者,用户可以登录然后注销(不丢失连接),并在未登录时继续发送消息) 然而,通过查看所有不同的stackoverflow帖子,没有人提到这个问题。有人能告诉我常用的方法是什么吗?根据您问题后的评论,您可以配置两个项目来更好地保护您的用户 调整socket.io实现: 升级socket.io实现以使用2.x 使用“socket.io#origins”配置来消除 任何

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

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


然而,通过查看所有不同的stackoverflow帖子,没有人提到这个问题。有人能告诉我常用的方法是什么吗?

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

调整socket.io实现:

  • 升级socket.io实现以使用2.x
  • 使用“socket.io#origins”配置来消除 任何域的默认CORS通配符
  • 在socket.io连接中使用经过身份验证的会话。看见 “socket.io#adapter”或“session.socket.io”模块替代方案
  • 调整您的站点安全标题:

  • 通过以下方式运行您的站点(如果公共可用) 来测试您当前的实现
  • 利用OWASP上的指南了解更多关于 保护您的站点,例如关于使用更新版本的站点 浏览器中提供的安全标头。

  • 来源:

    您的登录和注销是如何工作的?在建立socket.io连接之前,它是通过socket.io完成的还是通过网页中的http完成的?如果是通过http完成的,那么当用户注销时,您可以关闭该用户的所有socket.io连接,这将阻止您担心的事情。一个典型的web页面在注销后会重定向到一个新页面(从而删除socket.io连接)。这是典型的做法吗?例如,如果黑客知道如何在注销时保持连接,那么检查每个发射是否会更安全?