我正在寻找对Web应用程序实施移动时间窗口速率限制算法的最佳方法,以减少垃圾邮件或暴力攻击。
使用示例为“最近5分钟内来自给定IP的最大失败登录尝试次数”,“最近N分钟内(帖子/投票/等的最大登录次数)”。
我宁愿使用移动时间窗口算法,而不是每隔X分钟对统计数据进行硬重置(例如twitter api)。
这将用于C#/ ASP.Net应用程序。
使用像memcached这样的基于内存的快速哈希表。键将成为您要限制的目标(例如IP),每个存储值的到期时间应为最大限制时间。
为每个键存储的值将包含他们在执行操作时进行的最后N次尝试的序列化列表,以及每次尝试的时间。