asp.net防类似DDOS攻击(CC攻击)代码

简介:
< DOCTYPE html PUBLIC -WCDTD XHTML StrictEN httpwwwworgTRxhtmlDTDxhtml-strictdtd>

Web.config
 
<httpModules>
 <!-Url重写->
 <add type=”UrlRewriter.RewriterHttpModule, UrlRewriter” name=”UrlRewriter”/>
 <!-防类似DDOS攻击->
 <add type=”UrlRewriter.DDosAttackModule, UrlRewriter” name=”DDosAttackModule”/>
 </httpModules>
 
 
 
代码:
 
?[Copy to clipboard]View Code JAVA

 


using System;
using System.Web;
using System.Collections.Generic;
using System.Collections.Specialized;
using System.Timers;
 
namespace UrlRewriter
{
    /// <summary>
    /// 阻止攻击IP地址的回应
    /// </summary>
    public class DosAttackModule : IHttpModule
    {
        void IHttpModule.Dispose() { }
 
        void IHttpModule.Init(HttpApplication context)
        {
            context.BeginRequest += new EventHandler(context_BeginRequest);
        }
 
        private static Dictionary<string, short> _IpAdresses = new Dictionary<string, short>();
        private static Stack<string> _Banned = new Stack<string>();
        private static Timer _Timer = CreateTimer();
        private static Timer _BannedTimer = CreateBanningTimer();
 
        private const int BANNED_REQUESTS = 1; //规定时间内访问的最大次数
        private const int REDUCTION_INTERVAL = 1000; // 1 秒(检查访问次数的时间段)
        private const int RELEASE_INTERVAL = 5 * 60 * 1000; // 5 分钟(清除一个禁止IP的时间段)
 
        private void context_BeginRequest(object sender, EventArgs e)
        {
            string ip = HttpContext.Current.Request.UserHostAddress;
            if (_Banned.Contains(ip))
            {
                HttpContext.Current.Response.StatusCode = 403;
                HttpContext.Current.Response.End();
            }
 
            CheckIpAddress(ip);
        }
 
        /// <summary>
        /// 检查访问IP
        /// </summary>
        private static void CheckIpAddress(string ip)
        {
            if (!_IpAdresses.ContainsKey(ip)) //如果没有当前访问IP的记录就将访问次数设为1
            {
                _IpAdresses[ip] = 1;
            }
            else if (_IpAdresses[ip] == BANNED_REQUESTS) //如果当前IP访问次数等于规定时间段的最大访问次数就拉于“黑名单”
            {
                _Banned.Push(ip);
                _IpAdresses.Remove(ip);
            }
            else //正常访问就加次数 1
            {
                _IpAdresses[ip]++;
            }
        }
 
        #region Timers
 
        /// <summary>
        /// 创建计时器,从_IpAddress减去一个请求。
        /// </summary>
        private static Timer CreateTimer()
        {
            Timer timer = GetTimer(REDUCTION_INTERVAL);
            timer.Elapsed += new ElapsedEventHandler(TimerElapsed);
            return timer;
        }
 
        /// <summary>
        /// 创建定时器,消除一个禁止的IP地址
        /// </summary>
        /// <returns></returns>
        private static Timer CreateBanningTimer()
        {
            Timer timer = GetTimer(RELEASE_INTERVAL);
            timer.Elapsed += delegate { _Banned.Pop(); }; //消除一个禁止IP
            return timer;
        }
 
        /// <summary>
        /// 创建一个时间器,并启动它
        /// </summary>
        /// <param name="interval">以毫秒为单位的时间间隔</param>
        private static Timer GetTimer(int interval)
        {
            Timer timer = new Timer();
            timer.Interval = interval;
            timer.Start();
 
            return timer;
        }
 
        /// <summary>
        /// 减去从集合中的每个IP地址的请求
        /// </summary>
        private static void TimerElapsed(object sender, ElapsedEventArgs e)
        {
            foreach (string key in _IpAdresses.Keys)
            {
                _IpAdresses[key]--;
                if (_IpAdresses[key] == 0)
                    _IpAdresses.Remove(key);
            }
        }
 
        #endregion
 
    }
}

转载保留 : http://blog.wuaiwei.com/2011/04/02/asp-net%e9%98%b2%e7%b1%bb%e4%bc%bcddos%e6%94%bb%e5%87%bb%e4%bb%a3%e7%a0%81/



本文转自 netcorner 博客园博客,原文链接: http://www.cnblogs.com/netcorner/archive/2011/04/11/2911939.html   ,如需转载请自行联系原作者
相关文章
|
人工智能 算法 安全
如何构建Tb级DDoS攻击防御体系实现业务零中断?
本文基于NIST与MITRE框架,详解构建Tb级DDoS防御体系的六大核心技术模块,涵盖分布式清洗、智能调度、全栈高可用架构等,助力企业实现业务零中断。
785 0
|
移动开发 网络协议 安全
什么是 DDos 攻击?怎样防 DDos 攻击?
DDoS(分布式拒绝服务攻击)通过大量非法请求耗尽目标服务器资源,使其无法正常服务。常见手段包括SYN Flood、HTTP Flood等。防御方法有流量清洗、集群防护、高防DNS等,阿里云提供专业DDoS高防服务,保障业务稳定运行。
|
安全 网络协议 网络安全
DDoS攻击来袭,如何防御DDoS攻击以保障数据安全无忧?
DDoS攻击来袭,如何防御DDoS攻击以保障数据安全无忧?
594 20
|
边缘计算 网络协议 安全
DDoS攻击:网络世界的“洪峰考验”与应对逻辑
本文介绍了DDoS攻击的运行机制及其影响,并提供了多层次的防御策略。DDoS攻击通过海量流量使目标服务器过载,造成服务中断,对电商和在线平台带来巨大经济损失与用户信任危机。防御措施包括基础设施优化、流量调度及云端协同防护等技术手段。针对中小企业,推荐使用如非凡云提供的弹性防护方案,含200G免费DDoS防御与自动带宽扩容功能,有效降低攻击风险和技术门槛。
1126 0
DDoS攻击:网络世界的“洪峰考验”与应对逻辑
|
存储 人工智能 安全
实时拦截攻击并响应威胁,聊聊服务器DDoS防御软件
实时拦截攻击并响应威胁,聊聊服务器DDoS防御软件
538 16
|
算法 Java 测试技术
使用 BenchmarkDotNet 对 .NET 代码进行性能基准测试
使用 BenchmarkDotNet 对 .NET 代码进行性能基准测试
531 13
|
监控 负载均衡 安全
什么是DDoS攻击及如何防护DDOS攻击
通过上述防护措施,企业和组织可以构建全面的DDoS防护体系,有效抵御各类DDoS攻击,确保网络和服务的稳定运行。
10671 10
|
.NET 网络安全
asp.net防类似DDOS攻击(CC攻击)代码
Web.config   代码: ?[Copy to clipboard]View Code JAVA using System; using System.
1322 0
|
开发框架 前端开发 .NET
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
1044 0