node.js - 基本的socket.io身份验证

标签 node.js socket.io

我有以下代码允许用户加入房间开始聊天。

server.on('connect', function(data) {
  nickname = prompt('What is your name?');
  server.emit('join', {name : nickname, room : $('#roomid').val()});
  $('#events').append('<li>Welcome, ' + nickname + '!</li>');
});

但是,我担心的一个问题是:是什么阻止用户使用数百个用户名发出“加入”消息,向聊天室发送垃圾邮件?我是实时编程的新手,所以我想知道可以使用什么样的技术来防止这种行为。

最佳答案

默认情况下,没有什么可以阻止用户执行此操作。您需要构建服务器端安全性来处理此类事情; IRC 就是一个很好的例子,其中一些服务器设置了系统,可以限制或断开发送太多垃圾邮件的用户。对于服务器端的附加逻辑,请考虑以下选项:

  1. 如果用户在一段时间内发出超过一定数量的事件,则限制用户(即忽略他们发送的事件);如果他们经常或特别过度地这样做,请将他们断开连接/列入黑名单。
  2. 忽略在不允许的状态下发出的事件;例如,在某处跟踪已连接套接字的用户名(即 using socket.set ),如果它们发送另一个 join 事件,则将其丢弃。

关于node.js - 基本的socket.io身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11507970/

相关文章:

node.js - 使用 firebase 函数 api 运行套接字(相同的端口创建问题)

javascript - 从数据库检索多个 JSON 对象会导致 Express 错误

javascript - 为操作完成而调用 Node 异步回调

node.js - Express + Socket.io : find key in query string for every event except one

node.js - WebStorm建议我翻转if-else,这样做有什么好处?

node.js - 在 angularjs 指令中使用右键单击事件

node.js - socket.io 发出多次

node.js - React Native 中的 Socket io

node.js - Nginx Socket.io SSL 给 io is not defined 错误

javascript - 我如何将socket.io分离为socket.js文件,并在router.js中使用它