我正在寻找一种既好又便宜的方法来防止对我的 ASP.NET MVC 站点的拒绝服务攻击。
我一直在考虑一种解决方案,它拦截 HttpHandler,然后计算 Cache 对象中的请求,键类似于“RequestCount_[IpAddressOfRequestClient]”,但这似乎会产生疯狂的开销。
任何想法将不胜感激。谢谢!
我正在寻找一种既好又便宜的方法来防止对我的 ASP.NET MVC 站点的拒绝服务攻击。
我一直在考虑一种解决方案,它拦截 HttpHandler,然后计算 Cache 对象中的请求,键类似于“RequestCount_[IpAddressOfRequestClient]”,但这似乎会产生疯狂的开销。
任何想法将不胜感激。谢谢!
您可能会考虑尝试限制请求。通过 IP 和/或 cookie 识别用户,并将请求限制为(例如)每两秒 1 次。人类不会注意到,但这会大大减慢机器人的速度。
这有助于应用程序级别(保护您的应用程序/数据库),但它不是一个完整的解决方案,因为点击仍然来自网络级别。
作为前线防线,我可能会依赖硬件。许多 ISP 提供一些保护,例如: http: //www.softlayer.com/facilities_network_n2.html
这是一个非常古老的问题,但我希望这个参考可以帮助其他人。
现在我们正在使用“ API Protector .NET ”(https://apiprotector.net)来保护我们的 API 免受 DoS 和 DDoS 攻击。
它也是一个与MVC、WebApi 和 .NetCore兼容的库,它给我们带来了非常好的结果,无论是在简单性方面,还是在可维护性方面。使用这个库,您可以用一行代码以非常具体的方式保护 API 的每个函数。
正如 API Protector .NET 网站中所解释的:
如果您通常将 API 限制为每个 IP 或每个用户 N 个请求,那么这些 N 个请求可用于不断影响相同的特定繁重功能,从而严重减慢整个服务的速度。
“您的 API 的每个功能都必须以特定方式进行限制,具体取决于该功能对服务器的正常使用频率和处理成本,否则您将无法保护您的 API。”</p>
API Protector .NET 允许您以简单、声明性和可维护的方式轻松保护 .NET API 的每个功能免受 DoS 和 DDoS 攻击。
唯一的缺点是它的成本为 5 美元,但它以非常低的价格为我们提供了我们正在寻找的东西,不像 WebApiThrottle 库,虽然它是我尝试的第一个选项(因为它是免费的),但它最终是当我们想以特定方式保护不同的功能时(如解释的那样,这对于有效保护至关重要),这是不切实际的不可维护的。
API Protector .NET 允许组合不同的保护措施(按 ip、按用户、按角色等),用一行来装饰每个功能,这使其易于实现和维护。有关详细说明,请阅读:https ://apiprotector.net/how-it-works
一个有趣的轶事是,当我们仍然使用 WebApiThrottle 保护我们的 API 时,我们做了一些模拟 DDoS 攻击的测试,来自不同主机的许多并行请求,并且出于某种原因,(我认为这是由于与线程同步有关的事情),大量请求进入函数,并且由于服务器已经超载而迟到了,节流开始了。再加上难维护性,这并没有让我们对可靠的保护有太大的信心,这就是为什么我们最终尝试了这个效果很好的替代方案。