Node.js 容易的客人帐户=容易滥用?

Node.js 容易的客人帐户=容易滥用?,node.js,socket.io,Node.js,Socket.io,场景 我正在构建一个node.js/socket.io(express.js、mongodb、passport.js、socket.io)网络游戏。用户必须先登录才能玩 我正在考虑在首页上有一个大的“TRY NOW”按钮,它使用socket.io在mongodb中创建一个随机命名的来宾帐户,并用它将玩家登录到游戏中。除非用户注册,否则此来宾帐户将在48小时内销毁 滥用此功能的一种方法可能是编写一个脚本,反复单击“TryNow”按钮,使我的数据库中充斥着来宾帐户 问题 有没有办法在没有正式注册的情

场景

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

我正在考虑在首页上有一个大的“TRY NOW”按钮,它使用socket.io在mongodb中创建一个随机命名的来宾帐户,并用它将玩家登录到游戏中。除非用户注册,否则此来宾帐户将在48小时内销毁

滥用此功能的一种方法可能是编写一个脚本,反复单击“TryNow”按钮,使我的数据库中充斥着来宾帐户

问题


有没有办法在没有正式注册的情况下避免这种情况?我可以在“立即试用”旁边加上验证码,但我宁愿不使用它,除非我真的必须这样做。

有一些方法可以在没有验证码的情况下使用,但这不是完美的解决方案

  • 您可以为随时间持久化的客户端设置具有sessionid的cookie。如果用户有会话,此会话id可能会阻止“立即重试”按钮。这可以被另一个不存储cookie的浏览器绕过。或者如果用户删除了cookie
  • 如果扫描用户IP地址并实施洪水防护(例如,此IP地址可能在10分钟内点击该按钮,否则将阻止该按钮),则不建议使用此选项。但这对于共享和未共享NAT来说是非常不愉快的。考虑不要这样做。
  • 你可以考虑新用户的扫描活动,如果在第一分钟没有活动,他们的帐户被销毁,并且应该重新创建。 这些想法基本上是可行的