asp.net实现拒绝频繁的IP访问的方法
来源: 阅读:1357 次 日期:2016-08-09 16:20:12
温馨提示: 小编为您整理了“asp.net实现拒绝频繁的IP访问的方法”,方便广大网友查阅!

本文实例讲述了asp.net实现拒绝频繁的IP访问的方法。分享给大家供大家参考,具体如下:

首先我们要实现 IHttpModule接口

using System;

using System.Collections.Generic;

using System.Text;

using System.Web;

using System.Web.UI;

using System.Web.SessionState;

using System.Configuration;

namespace MyHttp

{

public class UrlReWrite : IHttpModule

{

///

/// 单个IP最大连接限制数量

///

private int rowCount = Convert.ToInt32(ConfigurationSettings.AppSettings["HttpRowCount"]);

///

/// 指定区域时间范围 单位分

///

private int httpTime = Convert.ToInt32(ConfigurationSettings.AppSettings["HttpTime"]);

public void Init(HttpApplication application)

{

application.BeginRequest += (new

EventHandler(this.Application_BeginRequest));

application.EndRequest += (new

EventHandler(this.Application_EndRequest));

}

private void Application_BeginRequest(Object source, EventArgs e)

{

HttpApplication Application = (HttpApplication)source;

HttpContext ctx = Application.Context;

//IP地址

string isIp = ctx.Request.UserHostAddress;

if (ctx.Application["time"] == null)

{

ctx.Application["time"] = DateTime.Now;

}

else

{

DateTime isTime = (DateTime)ctx.Application["time"];

int timeTract = Convert.ToInt32(DateTime.Now.Subtract(isTime).Minutes.ToString());

if (timeTract > (httpTime - 1))

{

ctx.Application["time"] = null;

ctx.Application["myip"] = null;

}

}

if (ctx.Application["myip"] != null && ctx.Application["myip"] is CartIp)

{

CartIp cartIp = (CartIp)ctx.Application["myip"];

cartIp.Insert(isIp);

ctx.Application["myip"] = cartIp;

if (cartIp.GetCount(isIp) > rowCount)

{

ctx.Response.Clear();

ctx.Response.Close();

}

}

else

{

CartIp cartIp = new CartIp();

cartIp.Insert(isIp);

HttpContext.Current.Application["myip"] = cartIp;

}

}

private void Application_EndRequest(Object source, EventArgs e)

{

}

public void Dispose()

{

}

}

}

ListIp 类

using System;

using System.Collections.Generic;

using System.Text;

namespace MyHttp

{

[Serializable]

public class ListIp

{

private string ip;

private int count;

///

/// IP地址

///

public string IP

{

get { return ip; }

set { ip = value; }

}

///

/// 累加数量

///

public int Count

{

get { return count; }

set { count = value; }

}

}

[Serializable]

public class CartIp

{

public CartIp()

{

if (_listIp == null)

{

_listIp = new List();

}

}

private List _listIp;

public List _ListIp

{

get { return _listIp; }

set { _listIp = value; }

}

///

/// 添加IP

///

public void Insert(string ip)

{

int indexof = ItemLastInfo(ip);

if (indexof == -1)

{

//不存在

ListIp item = new ListIp();

item.IP = ip;

_listIp.Add(item);

}

else

{

_listIp[indexof].Count += 1;

}

}

//判断IP是否存在

public int ItemLastInfo(string ip)

{

int index = 0;

foreach (ListIp item in _ListIp)

{

if (item.IP == ip)

{

return index;//存在

}

index += 1;

}

return -1;//不存在

}

///

/// 获得IP的数量

///

///

///

public int GetCount(string ip)

{

foreach (ListIp item in _ListIp)

{

if (item.IP == ip)

{

return item.Count;//存在

}

}

return -1;//不存在

}

}

}

在web.config 配置访问规则

希望本文所述对大家asp.net程序设计有所帮助。

更多信息请查看 网络编程
由于各方面情况的不断调整与变化, 提供的所有考试信息和咨询回复仅供参考,敬请考生以权威部门公布的正式信息和咨询为准!
关于我们| 联系我们| 人才招聘| 网站声明| 网站帮助| 非正式的简要咨询| 简要咨询须知| 加入群交流| 手机站点| 投诉建议
工业和信息化部备案号:滇ICP备2023014141号-1 云南省教育厅备案号:云教ICP备0901021 滇公网安备53010202001879号 人力资源服务许可证:(云)人服证字(2023)第0102001523号
云南网警备案专用图标
联系电话:0871-65317125(9:00—18:00) 获取招聘考试信息及咨询关注公众号:
咨询QQ:526150442(9:00—18:00) 版权所有:
云南网警报警专用图标
Baidu
map