专业网站建设品牌,18年专业建站经验,服务6000+客户--广州松河
免费热线:400-963-0016
微信咨询
|
联系我们
扫二维码关注公众号
网站首页
网站建设
短视频
网站推广
网站模板
客户案例
资讯动态
关于我们
网站首页
网站建设
短视频
网站推广
网站模板
客户案例
资讯动态
关于我们
位置:
广州松河
>
技术支持
> asp.net-防DDOS攻击(CC攻击)代码
asp.net-防DDOS攻击(CC攻击)代码
来源:网络整理 时间:2023/2/14 0:40:10 共
3656
浏览
//Web.config
//<httpModules>
// <!–Url重写–>
// <add type=”UrlRewriter.RewriterHttpModule, UrlRewriter” name=”UrlRewriter”/>
// <!–防类似DDOS攻击–>
// <add type=”UrlRewriter.DDosAttackModule, UrlRewriter” name=”DDosAttackModule”/>
// </httpModules>
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
}
}
版权说明:
本网站凡注明“广州松河 原创”的皆为本站原创文章,如需转载请注明出处!
本网转载皆注明出处,遵循行业规范,如发现作品内容版权或其它问题的,请与我们联系处理!
欢迎扫描右侧微信二维码与我们联系。
相关主题:
鹤岗合规公司招聘网站
公司调查去哪个网站好呢
上市公司环保成绩查询网站
设计网站软装主题公司
赤水品牌网站建设推广公司
新疆网站建设哪家公司好
公司装修网站免费资源
知名文化猎头公司网站推荐
网站推广谷歌公司有用吗
丹阳租房网站首页设计公司
·上一条:
IIS 配置禁止外部Iframe嵌套
|
·下一条:
C#操作IIS完整解析
同类资讯
索爱手机的质量怎样_java
奥拓福水刀质量怎么样_java
荒野乱斗为什么不让进_服务器
删除了共享文件能恢复吗_服务器
个人如何投资光伏电站_服务器
win11怎么查看cpu占用率_服务器
mysql 查询死锁,Java如何实现对Mysql数据库的行锁_数据库
mysql查询速度慢,mysql下载慢怎么办_数据库
mysql 查询今天,mysql怎么查看表是否存在_数据库
mysql 树形查询,55的InnoDB到底有何问题_数据库
mysql高级查询,mysql如何指定查询一张表的最后5行记录和最前5行
mysql查询表大小,mysql索引底层原理_数据库
如何提高SQL查询速度_数据库
mysql 权限查询,mysql中控制权限是由哪两个关键字_数据库
mysql查询分页,如何优化Mysql千万级快速分页_数据库
mysql查询解析,MySQL日志管理详解_数据库
mysql直接查询,如何查看mysql存储过程中sql的执行计划_数据库
mysql全查询,Workbench查询mysql数据库_数据库
MySQL日历查询,有哪些网站可以下免费的电子书_数据库
mySQL查询框架,java编程现在在市场占比最大的框架是什么框架_数据
资讯动态
公司新闻
互联网资讯
电商资讯
优化推广
技术支持
关于我们
公司简介
企业文化
服务项目
公司新闻
服务项目
网站建设
网站推广
品牌策划
移动应用
服务支持
在线咨询
服务流程
产品报价
售后服务
联系我们
代理加盟
付款方式
在线留言
联系方式
联系方式
电话:400-963-0016
邮箱:sales@itwy.com
QQ:250211130
微信:18520775521
Copyright © 广州松河信息科技有限公司 2005-2026 版权所有
粤ICP备16019765号
广州松河信息科技有限公司 版权所有
18520775521
QQ洽谈
sales@itwy.com