asp 检查黑名单_c# asp.net ip黑名单

短信验证码接口被恶意请求,写了一个简单的黑名单规则.

使用静态数组的形式实现,优点为不占用数据库资源且速度更快效率更高. 缺点为数据无持久化,网站重启后黑名单就清空了.

效果为: 如果指定时间内请求次数大于最大请求数并且发送的手机号码大于等于指定号码数量,则加入黑名单,时长为 {BlockTime}

根据如下属性进行配置后,

IsInBlackList方法为判断IP是否在黑名单内,返回bool

RecordRequest方法记录IP和手机号(可以根据功能自己修改具体功能),如满足列入黑名单条件,则自动列入黑名单, 返回bool. 如满足拉黑规则,则返回true,否则返回false

public class IpBlock

{

///

/// 统计时间单位(秒)

///

private const int Seconds = 60*50;//50分钟

///

/// 单位时间内请求超出指定次数,则加入黑名单

///

private const int RequestCount = 3;

///

/// 单位时间内请求的手机号码数

///

private const int RequestPhoneCount = 3;

///

/// 黑名单时间 分钟

///

private const int BlockTime = 60*24*7; //7天

///

/// IP黑名单

///

private static List BlackList;

///

/// 请求详情

///

private static List RequestList;

static IpBlock()

{

BlackList = new List();

RequestList = new List();

}

///

/// IP地址是否在黑名单中

///

///

///

public static bool IsInBlackList(string ip)

{

UpdateBlackList();

return BlackList.FirstOrDefault(x => x.Ip.Equals(ip)) != null;

}

///

/// 记录请求信息并将符合的IP列入黑名单

///

///

public static bool RecordRequest(string ip, string phone)

{

UpdateRequestList();

RequestList.Add(new IpRequestModel

{

Ip = ip,

RequestTime = DateTime.Now,

Phone = phone

});

var requestRecord = RequestList.Where(x => x.Ip.Equals(ip));

var count = requestRecord.Count();

var phoneCount = requestRecord.Select(x => x.Phone).Distinct().Count();

if (count >= RequestCount && phoneCount >= RequestPhoneCount)

{

AddToBlackList(ip);

return true;

}

return false;

}

///

/// 更新黑名单

///

private static void UpdateBlackList()

{

var expireList = BlackList.Where(x => x.ExpireTime < DateTime.Now).ToList();

foreach (var item in expireList)

{

BlackList.Remove(item);

}

}

///

/// 将IP列入黑名单

///

///

private static void AddToBlackList(string ip)

{

var item = BlackList.FirstOrDefault(x => x.Ip.Equals(ip));

if (item != null)

{

item.ExpireTime = DateTime.Now.AddMinutes(BlockTime);

}

else

{

BlackList.Add(new BlockedIp

{

ExpireTime = DateTime.Now.AddMinutes(BlockTime),

Ip = ip

});

}

}

///

/// 更新请求信息

///

private static void UpdateRequestList()

{

var expireList = RequestList.Where(x => x.RequestTime < DateTime.Now.AddSeconds(0-Seconds)).ToList();

foreach (var item in expireList)

{

RequestList.Remove(item);

}

}

}

public class BlockedIp

{

///

/// IP地址

///

public string Ip { get; set; }

///

/// 过期时间

///

public DateTime ExpireTime { get; set; }

}

public class IpRequestModel

{

///

/// IP地址

///

public string Ip { get; set; }

///

/// 请求时间

///

public DateTime RequestTime { get; set; }

///

/// 手机号

///

public string Phone { get; set; }

}

效果:

......

2018-08-31 10:47:51.007 INFO ASP.mobilergister_aspx: 发送验证码短信 时间:2018/8/31 10:47:51 IP地址:223.68.67.198 手机号码:177****8475

2018-08-31 10:50:55.412 INFO ASP.mobilergister_aspx: IP加入黑名单 时间:2018/8/31 10:50:55 IP地址:220.190.28.133

2018-08-31 10:50:58.302 INFO ASP.mobilergister_aspx: IP加入黑名单 时间:2018/8/31 10:50:58 IP地址:60.181.172.196

2018-08-31 10:51:00.474 INFO ASP.mobilergister_aspx: IP加入黑名单 时间:2018/8/31 10:51:00 IP地址:39.171.235.161

2018-08-31 10:51:14.037 INFO ASP.mobilergister_aspx: IP加入黑名单 时间:2018/8/31 10:51:14 IP地址:60.181.164.123

2018-08-31 10:51:15.677 INFO ASP.mobilergister_aspx: IP加入黑名单 时间:2018/8/31 10:51:15 IP地址:182.200.0.14

2018-08-31 10:51:21.037 INFO ASP.mobilergister_aspx: IP加入黑名单 时间:2018/8/31 10:51:21 IP地址:112.12.136.83

2018-08-31 10:51:23.724 INFO ASP.mobilergister_aspx: IP加入黑名单 时间:2018/8/31 10:51:23 IP地址:42.234.41.134

2018-08-31 10:51:25.802 INFO ASP.mobilergister_aspx: IP加入黑名单 时间:2018/8/31 10:51:25 IP地址:60.180.34.139

2018-08-31 10:51:28.443 INFO ASP.mobilergister_aspx: IP加入黑名单 时间:2018/8/31 10:51:28 IP地址:182.200.179.203

2018-08-31 10:51:31.130 INFO ASP.mobilergister_aspx: IP加入黑名单 时间:2018/8/31 10:51:31 IP地址:115.223.150.237

2018-08-31 10:51:39.990 INFO ASP.mobilergister_aspx: IP加入黑名单 时间:2018/8/31 10:51:39 IP地址:113.87.130.72

2018-08-31 10:51:46.771 INFO ASP.mobilergister_aspx: IP加入黑名单 时间:2018/8/31 10:51:46 IP地址:113.247.23.88

2018-08-31 10:51:47.990 INFO ASP.mobilergister_aspx: IP加入黑名单 时间:2018/8/31 10:51:47 IP地址:60.180.50.65

2018-08-31 10:51:52.459 INFO ASP.mobilergister_aspx: IP加入黑名单 时间:2018/8/31 10:51:52 IP地址:182.200.7.6

2018-08-31 10:51:57.506 INFO ASP.mobilergister_aspx: IP加入黑名单 时间:2018/8/31 10:51:57 IP地址:115.223.135.93

2018-08-31 10:52:07.008 INFO ASP.mobilergister_aspx: IP加入黑名单 时间:2018/8/31 10:52:07 IP地址:223.68.67.198

2018-08-31 10:52:08.758 INFO ASP.mobilergister_aspx: IP加入黑名单 时间:2018/8/31 10:52:08 IP地址:60.180.235.58

2018-08-31 10:52:28.555 INFO ASP.mobilergister_aspx: IP加入黑名单 时间:2018/8/31 10:52:28 IP地址:27.18.202.136

2018-08-31 10:52:59.367 INFO ASP.mobilergister_aspx: IP加入黑名单 时间:2018/8/31 10:52:59 IP地址:113.139.240.243

2018-08-31 10:55:06.790 INFO ASP.mobilergister_aspx: 发送验证码短信 时间:2018/8/31 10:55:06 IP地址:125.47.67.224 手机号码:130****1322

2018-08-31 10:55:34.775 INFO ASP.mobilergister_aspx: IP加入黑名单 时间:2018/8/31 10:55:34 IP地址:59.109.117.88

2018-08-31 10:57:40.229 INFO ASP.mobilergister_aspx: IP加入黑名单 时间:2018/8/31 10:57:40 IP地址:180.120.160.12

2018-08-31 11:02:21.105 INFO ASP.mobilergister_aspx: IP加入黑名单 时间:2018/8/31 11:02:21 IP地址:113.139.242.216

2018-08-31 11:14:03.632 INFO ASP.mobilergister_aspx: 发送验证码短信 时间:2018/8/31 11:14:03 IP地址:1.194.21.226 手机号码:130****2793

2018-08-31 11:27:52.295 INFO ASP.mobilergister_aspx: IP加入黑名单 时间:2018/8/31 11:27:52 IP地址:27.17.148.80

2018-08-31 11:31:31.718 INFO ASP.mobilergister_aspx: 发送验证码短信 时间:2018/8/31 11:31:31 IP地址:125.47.55.70 手机号码:130****1323

2018-08-31 11:31:40.968 INFO ASP.mobilergister_aspx: IP加入黑名单 时间:2018/8/31 11:31:40 IP地址:182.200.3.11

2018-08-31 11:31:45.843 INFO ASP.mobilergister_aspx: IP加入黑名单 时间:2018/8/31 11:31:45 IP地址:125.47.55.70

......

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值