我在寻找一个良好的和廉价的方式,以防止我的ASP.NET MVC网站的拒绝服务攻击。

我一直在想拦截的HttpHandler的,然后对在该缓存对象的请求的解决方案,关键是像“RequestCount_ [IpAddressOfRequestClient]”,但似乎像它会产生一个疯狂的开销。

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

有帮助吗?

解决方案

您可以考虑试图扼杀的请求。通过IP和/或Cookie和限制要求(说)1每两秒钟识别用户。将人不会注意到,但这将显着慢下来一个机器人。

这有助于在应用层(保护您的应用/数据库),但它不是一个完整的解决方案,因为命中还是在网络层面的到来。

作为防御的第一线,我可能会依赖于硬件。许多互联网服务提供商提供一些保护,比如: http://www.softlayer.com/facilities_network_n2.html

其他提示

这是一个非常古老的问题,但我希望这有助于参考别人。

现在我们使用 '的 API保护.NET '( https://apiprotector.net ),以保护我们的对抗DoS和DDoS攻击的API。

这是一个库的 MVC,的WebAPI和.NetCore 也已经给了我们的很好的结果,无论是在兼容的简单,但从根本上的可维护性即可。有了这个LIB您可以litterally保护您的API的各项功能与单行线,并在一个非常特殊的方式。

如在API保护.NET的网站进行了说明:

  

如果你限制你的API,在一般的方式,每个IP或每N个请求   用户,这是足以让这些N个请求可以用来不断   影响相同的特定重功能会严重减缓   整个服务。

     

“您的API中的每个函数必须在被限制   根据使用的正常频率和成本的特定方式   处理的其中该功能意味着对于服务器,否则   你不保护你的API。”

     

API保护.NET可以保护你的.NET的各项功能   针对DoS和DDoS攻击毫不费力,在一个简单的API,   声明性和maintenable方式。

唯一的负面的一点是,它的成本5美元,但它给了我们,我们是在一个非常低的价格寻找,不像WebApiThrottle库,尽管它曾是我的第一选择是什么(因为它是免费的),它结束了,当我们想保护不同的功能以特定的方式(这是有效保护的关键不切实际难以维护,为解释)。

API保护.NET允许不同的保护(通过用户,通过作用,通过腹膜在一般情况下,等)结合装饰的与单个线下,这使得它的每个功能的容易实现和维护即可。有关详细的解释读取: https://apiprotector.net/how-it-works

这是有趣的轶事是,很久以前,当我们还在保护我们的API与WebApiThrottle 后,我们做了一些测试,模拟DDoS攻击,与来自不同主机的许多并行请求,出于某种原因,(我认为是由于线程同步相关的东西),请求阵阵进来的功能,后期与服务器已经超负荷,节流开始。这,添加到困难的可维护性,并没有给我们一个坚实的保障太多的信心,这就是为什么我们结束了尝试这种替代方案,效果很好。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top