我有一个我在MVC3 .Net中运行的浏览器游戏。因为每个人都需要在一个公平的竞争环境中,为了阻止人们使用宏以每小时一百万英里的速度点击鼠标,我只需添加:
if ($.active < 10) { //stuff }
到我的javascript。很好,工作得很好,但由于它是客户端,很难相信。我试图复制这个服务器端,但是我在尝试找到一个等价物时遇到了一些麻烦。有没有其他人可以想到将这种类型的设置移动到更好? IIS中的设置,web.config设置?我环顾互联网,无法找到任何类似的东西。
思想?
答案 0 :(得分:0)
通常的服务器端解决方案称为“速率限制”。您可以从特定客户端识别服务器上的相关请求,跟踪这些请求到达的速度,并选择每秒最大数量的请求数或您允许的每分钟请求数。如果超过该数量,您可以决定部署什么策略。您可以延迟它们,返回错误,断开它们,注销用户等等...有时,选择一种策略可以让客户不知道它受到速率限制,因此无法有意识地检测和适应试图最大化它的吞吐量。
您可以根据需要获得详细信息,甚至可以根据需要为API中的不同操作选择不同的速率限制策略。
您尝试选择一个数字来限制合法真实用户永远不会遇到的速率限制,但显然会让机器不会滥用您的服务器或游戏逻辑。