gpt4 book ai didi

c# - 防止恶意请求 - DOS 攻击

转载 作者:可可西里 更新时间:2023-11-01 08:09:43 24 4
gpt4 key购买 nike

我正在开发一个 asp.net MVC web 应用程序,客户要求我们尽最大努力使它尽可能地抵御拒绝服务攻击。他们担心网站可能会收到恶意的大量请求,目的是减慢/关闭网站。

我已经与产品所有者讨论过这个问题,因为它确实超出了实际 Web 应用程序的职权范围。我认为监控流量和响应恶意请求是托管/网络团队的责任。

但是他们坚持认为应用程序应该内置一些预防措施。但他们不想实现 CAPTCHA。

有人建议我们限制在给定时间范围内可以为 session 提出的请求数量。我在想做这样的事情 Best way to implement request throttling in ASP.NET MVC?但是使用 session ID 而不是客户端 IP,因为这会给来自公司防火墙后面的用户带来问题——他们的 IP 都是相同的。

他们还建议添加关闭站点某些区域的功能 - 建议管理员用户可以关闭数据库密集区域......然而,这将通过 UI 控制,如果它在 DOS 下肯定攻击管理员用户无论如何都无法访问它。

我的问题是,这样做真的值得吗?真正的 DOS 攻击肯定会更高级吗?

您还有什么建议吗?

最佳答案

拒绝服务攻击几乎可以是任何会影响您为他人提供的服务稳定性的行为。在这种情况下,您谈论的是网络 DoS,并且如前所述,这通常不会发生在您的应用程序级别。

理想情况下,这种攻击会在网络级别得到缓解。有专门为此构建的防火墙,例如 Cisco ASA 5500 series它的工作原理是从基本保护到高吞吐量缓解。它们是非常智能的盒子,我可以保证它们在阻止此类攻击方面的有效性,只要使用适合您获得的吞吐量的正确模型即可。

当然,如果无法访问为您执行此操作的硬件防火墙,您可以采取一些权宜之计来帮助防御这些类型的攻击。 请注意,这些都不会达到专用防火墙的一半效果。

一个这样的例子是 IIS 模块 Dynamic IP Restrictions它允许您定义最大并发请求的限制。然而,在实践中,这有一个缺点,它可能会开始阻止来自浏览器的合法请求,这些浏览器具有高并发请求吞吐量,用于下载脚本和图像等。

最后,您可以做的事情真的很粗糙,但也真的很有效,就像我之前写的那样。基本上,它是一个小工具,用于监视来自同一 IP 的重复请求的日志文件。因此,假设从 1.2.3.4/Home 发出 10 个请求,时间超过 2 秒。如果检测到这种情况,将添加防火墙规则(在 Windows 高级防火墙中,使用 shell 命令添加)以阻止来自该 IP 的请求,然后可以在大约 30 分钟后删除该规则。

就像我说的那样,它非常粗糙,但是如果您必须在服务器级别执行此操作,那么您实际上并没有太多明智的选择,因为它不是应该执行的位置。您是完全正确的,责任在某种程度上由托管服务提供商承担。

最后,您对验证码的看法也是正确的。如果有的话,它可以通过一遍又一遍地执行图像生成(这可能是资源密集型的)来协助 DoS,从而使您的资源更加匮乏。验证码生效的时间是,如果您的网站被自动注册机器人发送垃圾邮件,但我相信您已经知道了。

如果您真的想在应用程序级别做一些事情来取悦当权者,那么在您的应用程序中实现一些基于 IP 的请求限制是可行的,尽管 90% 是无效的(因为您仍然必须处理请求)。

关于c# - 防止恶意请求 - DOS 攻击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14706188/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com