C#MVC:什么是防止ASP.NET站点上的拒绝服务(DOS)攻击的好方法?

时间:2009-06-01 06:42:16

标签: c# asp.net asp.net-mvc denial-of-service

我正在寻找一种好的,廉价的方法来防止我的ASP.NET MVC网站上的拒绝服务攻击。

我一直在考虑一个拦截HttpHandler然后在Cache对象中计算请求的解决方案,其中的密钥类似于“RequestCount_ [IpAddressOfRequestClient]”,但这似乎会产生一个疯狂的开销。

任何想法都将不胜感激。谢谢!

2 个答案:

答案 0 :(得分:4)

您可能会考虑尝试限制请求。通过IP和/或cookie识别用户,并将请求限制为(比方说)每两秒钟1次。人类不会注意到,但这会大大减慢机器人的速度。

这有助于应用程序级别(保护您的应用程序/数据库),但它不是一个完整的解决方案,因为命中仍然在网络级别。

作为防线的第一线,我可能会依赖硬件。许多ISP提供了一些保护,例如:http://www.softlayer.com/facilities_network_n2.html

答案 1 :(得分:0)

这是一个非常老的问题,但我希望此参考对其他人有所帮助。

现在,我们正在使用“ API Protector .NET ”(https://apiprotector.net)来保护我们的API免受DoS和DDoS攻击。

这也是一个与 MVC,WebApi和.NetCore 兼容的库,这给我们非常好的结果,两者都简单,但是基本上是可维护性。有了这个lib,您就可以用一行代码,以一种非常特定的方式来保护您的API的每个功能。

如API Protector .NET网站中所述:

  

如果通常将API限制为每个IP或每个N个请求   用户,对于这N个请求就可以不断使用   影响相同的特定重功能,可能会严重减慢速度   整个服务。

     

“ API的每个功能必须在   具体方法取决于正常使用频率和成本   该功能对服务器意味着的处理量,否则   您没有保护您的API。”

     

API Protector .NET允许您保护.NET的每个功能   轻松应对DoS和DDoS攻击的API,   声明和可维护的方式。

唯一的缺点是它的价格为5美元,但它以非常低的价格为我们提供了我们想要的东西,这与WebApiThrottle库不同,尽管它是我尝试的第一个选择(因为它是免费的),所以当我们想以特定的方式保护不同的功能时,它就变得不切实际,难以维护(如所解释的那样,对于有效的保护至关重要)。

API Protector .NET允许组合不同的保护(按IP,按用户,按角色,一般来说,等等)用单个行装饰每个功能,这使得易于使用实施和维护。有关详细说明,请阅读:https://apiprotector.net/how-it-works

那是一个有趣的故事,当我们仍然使用WebApiThrottle保护我们的API 时,我们进行了一些模拟DDoS攻击的测试,其中包含来自不同主机的许多并行请求,并且出于某种原因,(认为这是由于与线程同步有关的事情),功能中出现了大量请求,并且在服务器已经超载之后,限制开始了。加上难以维护的特性,这并没有给我们提供足够的信心来提供可靠的保护,这就是为什么我们最终尝试了这种效果很好的替代方法。