可能/部分重复:

我正在寻找最好的方式来实现移动时间窗口速率限制算法的Web应用程序,以减少垃圾邮件或暴力攻击.

使用示例包括"过go 5分钟内从给定IPtry 登录失败的最大次数"、"最大(帖子/投票/等)次数"在最后N分钟内".

我更喜欢使用移动时间窗口算法,而不是每X分钟硬重置一次统计数据(比如twitter api).

这将是一个C#/ASP.网络apply.

推荐答案

使用快速的基于内存的哈希表,如memcached.密钥将是您限制的目标(例如IP),每个存储值的过期时间应该是最长限制时间.

for each 键存储的值将包含一个序列化的列表,其中列出了他们在执行操作时最后N次try ,以及每次try 的时间.

Asp.net相关问答推荐

.net 中的 [] 括号是什么?

如何在 ASP.​NET Core 中使用 jquery

Web 服务器配置为不列出此目录的内容. asp.net vs 2012 错误?

使用进程外会话状态的 ASP.NET 应用程序中的 SQL Server 连接问题

ASP.NET 如何将控件呈现为 HTML?

由于缺少定义,在 .net Core 应用程序上构建失败

跨子域共享 ASP.NET cookie

不支持关键字:服务器

ASP.NET MVC 中的 ASP.NET AJAX 与 jQuery

Httpclient 该实例已经启动了一个或多个请求.只能在发送第一个请求之前修改属性

System.Web.MVC 自 MS14-059 以来未复制到 bin 文件夹中.如何防止由于 Windows 更新而创建缺少 DLL 的构建?

如何使用 asp.net 获取 html Select 的选定值

使用 LINQ 进行递归控制搜索

ASP.net 中是否有 after Page_Load 事件

为什么混合 Razor Pages 和 VueJs 是一件坏事?

Twitter Bootstrap 和 ASP.NET GridView

如何在 ASP.Net MVC 3 中返回 HttpNotFound() 的视图?

好的 ASP.NET 类似 excel 的网格控件?

ASP.NET MVC 5 Web.config:FormsAuthenticationModule或FormsAuthentication

如何调试 w3wp clr.dll 错误