基本的socket.io身份验证

时间:2012-07-16 15:55:21

标签: 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>');
});

但是,我遇到的一个问题是:什么阻止用户向数百个用户名发出“加入”,向聊天室发送垃圾邮件?我对实时编程很陌生,所以我想知道我可以使用哪种技术来防止这种行为。

1 个答案:

答案 0 :(得分:1)

默认情况下,阻止用户执行此操作并不存在任何问题。你需要构建服务器端安全性来处理这种事情;一个很好的例子是IRC,其中一些服务器设置了系统,限制或断开过于垃圾邮件的用户。请考虑服务器端其他逻辑的这些选项:

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