ASP.NET Web应用程序防止拒绝服务攻击
我可以使用哪些工具或技术来保护我的 ASP.NET Web 应用程序免受拒绝服务攻击
What tools or techniques can I use to protect my ASP.NET web application from Denial Of Service attacks
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
当然,硬件解决方案是防止 DOS 攻击的最佳选择,但考虑到您无法访问硬件配置或 IIS 设置的情况,这绝对是开发人员必须拥有方便的东西来阻止或至少减少 Dos 攻击效果的原因。
逻辑的核心概念依赖于 FIFO(先进先出)集合,例如队列,但由于它有一些限制,我决定创建自己的集合。
在不讨论更多细节的情况下,这是我使用的完整代码:
内部类旨在保留请求的日期。
当然,DOS 攻击请求会在每个请求上创建新的会话,而网站上的人工请求包含打包在一个会话中的多个请求,因此可以在 Session_Start 中调用该方法。
用法:
对于请求繁重的网站,您可以将秒更改为毫秒,但请考虑此代码造成的额外负载。
我不知道是否有更好的解决方案来阻止对网站的故意攻击,因此我感谢任何改进代码的评论和建议。到那时,我认为这是以编程方式防止对 ASP.NET 网站进行 DOS 攻击的最佳实践。
For sure a hardware solution is the best option to prevent DOS attacks, but considering a situation in which you have no access to hardware config or IIS settings, this is definitely why a developer must have something handy to block or at least decrease dos attack effect.
The core concept of logic relies on a FIFO (First In First Out) collection such as Queue, but as it has some limitations I decided to create my own collection.
Without discussing more details this is the complete code I use:
The internal class is designed to keep the date of request.
Naturally DOS Attack requests create new sessions on each request while human requests on a website contain multiple requests packed in one session, so the method can be called in Session_Start.
usage:
for a heavy request website you may change seconds to milliseconds but consider the extra load caused by this code.
I am not aware if there is a better solution to block intentional attacks on website, so I appreciate any comment and suggestion to improve the code. By then I consider this as a best practice to prevent DOS attacks on ASP.NET websites programmatically.
尝试动态 IP 限制扩展 http://www.iis.net/download/dynamiciprestrictions
完美的解决方案,但有助于提高标准 =)
Try the Dynamic IP Restriction extension http://www.iis.net/download/dynamiciprestrictions
Not a perfect solution, but helps raise the bar =)
这是一个广泛的领域,因此如果您可以更具体地说明您的应用程序或您要防范的威胁级别,我相信更多的人可以为您提供帮助。
但是,您可以立即选择缓存解决方案的组合,例如 Squid: http://www.blyon.com/using-squid-proxy-to-fight-ddos/,动态 IP 限制(如 Jim 所解释),如果您有基础设施,主动-被动故障转移设置,其中您的被动计算机提供占位符内容,该内容不会访问您的数据库/任何其他计算机。这是最后一道防线,可以最大限度地减少 DDOS 导致整个站点脱机的时间。
It's a broad area, so if you can be more specific about your application, or the level of threat you're trying to protect against, I'm sure more people can help you.
However, off the bat, you can go for a combination of a caching solution such as Squid: http://www.blyon.com/using-squid-proxy-to-fight-ddos/, Dynamic IP Restriction (as explained by Jim) and if you have the infrastructure, an active-passive failover setup, where your passive machine serves placeholder content which doesnt hit your database / any other machines. This is last-defence, so that you minimise the time a DDOS might bring your entire site offline for.