我正在尝试通过以下方式实现请求限制:
我已将该代码提取到我的解决方案中,并使用以下属性修饰了API控制器端点:
[Route("api/dothis/{id}")]
[AcceptVerbs("POST")]
[Throttle(Name = "TestThrottle", Message = "You must wait {n} seconds before accessing this url again.", Seconds = 5)]
[Authorize]
public HttpResponseMessage DoThis(int id) {...}
Run Code Online (Sandbox Code Playgroud)
这会编译,但属性的代码不会被命中,并且限制不起作用.我没有收到任何错误.我错过了什么?
可能/部分重复:
我正在寻找为Web应用程序实现移动时间窗口速率限制算法的最佳方法,以减少垃圾邮件或暴力攻击.
使用的示例是"在过去5分钟内来自给定IP的最大失败登录尝试次数","最近N分钟内的最大((帖子/投票/等等)...").
我宁愿使用移动时间窗口算法,而不是每X分钟重新统计一次(比如twitter api).
这将是一个C#/ ASP.Net应用程序.
我不希望有人保留F5我的网站或使用一些工具来频繁请求页面.
也就是说,防止一个客户端频繁调用Action或Controller.
我该如何实现呢?我可以使用任何包裹吗?就像AntiXSS库一样.
我正在开发一个asp.net MVC Web应用程序,客户端要求我们尽最大努力使其尽可能具有抵御拒绝服务攻击的能力.他们担心该网站可能会收到恶意的大量请求,意图减慢/取消网站.
我已经与产品所有者讨论了这个问题,因为它实际上不属于实际的Web应用程序.我认为托管/网络团队有责任监控流量并响应恶意请求.
但是他们坚持认为应用程序应该内置一些预防措施.但他们不想实施CAPTCHA.
有人建议我们限制在给定时间范围内可以为会话提出的请求数.我在考虑做这样的事情 在ASP.NET MVC中实现请求限制的最佳方法?但是使用会话ID不是客户端IP,因为这会给来自公司防火墙后面的用户带来问题 - 他们的IP都是一样的.
他们还建议添加关闭网站某些区域的功能 - 建议管理员用户可以关闭数据库密集区域......但是这可以通过UI控制,当然如果它是在DOS攻击下管理员用户无论如何都无法达到它.
我的问题是,这样做真的值得吗?当然真正的DOS攻击会更先进吗?
你有什么其他的建议?
我正在构建一个ASP.NET MVC站点,我想限制经过身份验证的用户使用该站点的某些功能的频率.
虽然我从根本上理解了速率限制是如何工作的,但我无法想象如何以编程方式实现它而不会产生主要的代码气味.
你能用C#示例代码指出一个简单而强大的解决方案来解决这个问题吗?
如果重要,所有这些功能目前都表示为仅接受的动作HTTP POST.我可能最终也希望对HTTP GET函数实现速率限制,所以我正在寻找适用于所有这些情况的解决方案.
c# ×4
asp.net ×2
asp.net-mvc ×2
ddos ×2
throttling ×2
.net ×1
algorithm ×1
limit ×1
security ×1