我正在开发一个网络应用程序,其中某些操作会为用户带来“业力”。 karma increment 是一个简单的 AJAX 请求,它在数据库中增加一个数字。现在如何防止用户手动发出重复的 AJAX 请求并一次又一次地增加自己的分数?
编辑:赚取用户业力的事件都是在客户端使用 javascript 发生的。因此,服务器无法知道它是来自应用程序的“真实”请求还是由用户在控制台上键入 $.post 创建的“虚假”请求。
Edit2:找到一个 similar SO question处理这个问题。听起来答案是,混淆的安全性是最好的选择。保证安全是不可能的。因此,任何有关加密工具等的建议都会使 AJAX 调用的内容更难阅读,我们将不胜感激。
最佳答案
与其试图阻止人们作弊,您应该专注于尽量减少作弊者对非作弊者的不利影响:
如果 karma 被用作“高分”并且您担心用户获得 karma 的速度比他们应该考虑的要保留上次获得 karma 的时间戳,如果时间过早和/或设置,则拒绝请求获得的业力的每日限制,因此当他们不在键盘上时,他们无法自动化该过程。
如果为用户赚取业力的操作也对其他用户产生影响,那么它应该是一个触发这两种影响的 ajax 调用。
关于ruby-on-rails - 防止用户发布虚假的 AJAX 请求(确保 AJAX 请求仅来自应用程序),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11454028/