我有一个用户点击我制作的游戏的按钮。每次用户单击按钮时,它都会向我的rest api发送请求,递增计数器,将计数存储在我的数据库中并返回。游戏的目标是尽可能多地单击按钮。
请求如下所示:
$.ajax({
type: 'POST',
url: '/increment',
success: handleSuccess
}
我关心的是有人编写一个脚本来阻止/increment
休息终点并提升他们的分数。
我虽然使用captcha
,但我担心会让我的网站难以使用并且看起来很糟糕。
还有其他方法可以阻止脚本/机器人/垃圾邮件发送者点击我的休息端点吗?
答案 0 :(得分:0)
如果请求登录您的用户或解决验证码不是一个选项,您也可以记录该请求的IP并停止递增一段时间(例如24小时),如果它再次由该IP完成。为了给您的人类用户带来一些便利,如果在您的时间限制内再次点击它,您也会发送警告信息。
这种方法并不完美,因为在大型大学或公司网络中,可能有更多用户共享IP地址,但根据您的受众,这种方法可能已经足够了。它的妥协应该可以很好地作为便利(没有登录/验证码)和没有垃圾邮件之间的权衡(一些用户在极少数情况下无法保存他们的分数)。