轻松的访客帐户=容易滥用?

时间:2013-01-13 12:55:09

标签: node.js socket.io

方案

我正在构建一个node.js / socket.io(express.js,mongodb,passport.js,socket.io)网页游戏。用户必须先登录才能玩。

我正在考虑做一个大的"现在尝试"首页上的按钮,使用socket.io在mongodb中创建一个随机命名的访客帐户,并使用它将玩家记录到游戏中。除非用户注册,否则此访客帐户将在48小时内销毁。

滥用此功能的一种方法可能是编写一个脚本,反复点击"立即尝试"按钮以使用访客帐户填充我的数据库。

问题

如果没有完整的注册,有没有办法避免这种情况?我可以把验证码放在"现在尝试"但除非我真的需要,否则我宁愿不使用它。

1 个答案:

答案 0 :(得分:1)

如果没有CAPTCHA,有一些方法可以做到这一点,但它不是完美的解决方案。

  1. 您可以为该客户端的sessionid设置一个随时间持续的cookie。如果用户有会话,则此会话ID可以阻止“立即尝试”按钮。这可能会被另一个不存储cookie的浏览器绕过。或者只是用户删除cookie
  2. 不推荐,如果您扫描用户IP地址并实施防洪保护(例如,此IP地址可能会在10分钟内点击该按钮,否则会阻止它)。但是对于共享和NAT而言,这将是非常不愉快的。考虑不做这个。
  3. 否则,您可以考虑扫描新成立的用户的活动,如果在最初几分钟内没有任何活动,他们的帐户将被销毁,并且应该再次创建。
  4. 这些是可能有用的想法。