基本socket.io身份验证
问题描述:
我有以下代码允许用户加入聊天室。基本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,其中一些服务器设置了系统,这限制或断开了太垃圾的用户。考虑这些选项的附加逻辑在服务器端:
- 限制用户(即,使其在那里它们发送被忽略的事件),如果他们发出超过一定数目在一段时间内的事件的更;断开/黑名单,如果他们经常或特别过分。
- 忽略以不允许状态发射的事件;例如,跟踪连接的套接字的用户名(例如using
socket.set
),并且如果他们发送另一个join
事件,则丢弃它。