【转载】ASP.NET网站限制访问频率
来源:互联网 发布:好办软件是什么 编辑:程序博客网 时间:2024/05/16 15:58
【转载】ASP.NET网站限制访问频率
基本目标:限制同一IP访问网站的频率。比如,我们限制为每240分钟来自同一IP的用户最多只能够访问首页40次、其他页面200次。
比如您现在可以打开http://freesms.cloudapp.net/ 这个网站试一试,刷新40次,就可以发现您在4小时内无法再次访问到正确的网站内容了。
基本思想:
- 用HttpContext.Cache记录访问次数
- 将IP值与用户访问方式作为共同的Key,可以对用户的不同访问方式做不同的限制。
- 超出限额时调用Response.End()。
具体代码:
一、 定义持续时间
在本例中,我们使用240分钟作为一次限制的时间。
private const int DURATION = 240
二、定义访问方式枚举
针对不同的访问方式进行不同的限制。在本例中,我们只区分两种访问方式:正常访问与PostBack。在正常应用中,您还可以根据需要增加访问不同页面的限制。
public enum ActionTypeEnum { Normal=40, Postback=100 }
三、判断逻辑
- 在某IP第一次采用某种访问方式进行访问时,增加Cache的Key=访问方式+IP,返回True
- 如果Key已经存在,增加访问次数,返回True
- 如果超出次数,返回False
public static bool IsValid(ActionTypeEnum actionType) { HttpContext context = HttpContext.Current; if (context.Request.Browser.Crawler) return false; string key = actionType.ToString() + context.Request.UserHostAddress; int hit = (Int32)(context.Cache[key] ?? 0); if (hit > (Int32)actionType) return false; else hit++; if (hit == 1) { context.Cache.Add(key, hit, null, DateTime.Now.AddMinutes(DURATION), System.Web.Caching.Cache.NoSlidingExpiration, System.Web.Caching.CacheItemPriority.Normal, null); } else { context.Cache[key] = hit; } return true; }
四、在页面中调用
判断函数需要在页面的OnInit方法中调用。在这里需要使用一些自己定义的逻辑,来进行不同访问方式的判断。下面的例子是一个最简单的,只区分正常访问与Postback。
protected override void OnInit(EventArgs e){ base.OnInit(e); if (!IsPostBack) { if (!ActionValidator.IsValid(ActionValidator.ActionTypeEnum.Normal)) { Response.Write("您发送得太频繁,被系统判断为广告。广告或其他定制业务请联系邮箱admin@cloudera.cn,谢谢。- http://freesms.cloudapp.net"); Response.End(); } } else { if (!ActionValidator.IsValid(ActionValidator.ActionTypeEnum.Postback)) { Response.Write("您发送得太频繁,被系统判断为广告。广告或其他定制业务请联系邮箱admin@cloudera.cn,谢谢。- http://freesms.cloudapp.net"); Response.End(); } }}希望本文对您有所帮助!
0 0
- 【转载】ASP.NET网站限制访问频率
- ASP.NET网站限制访问频率
- ASP.NET网站限制访问频率
- ASP.NET WebApi实现请求频率限制
- Redis小案例(一):实现网站访问频率限制
- ASP.NET 网站路径[转载]
- 【转载】解决ASP.NET上传文件大小限制
- asp.net网站的session时间限制
- 配置URL的访问频率限制
- nginx添加ip访问频率限制
- nginx添加ip访问频率限制
- 为nginx添加ip访问频率限制
- 网站的访问ip中找出进行频繁连接的ip,并对这些ip的访问频率进行限制。
- App_Data怎么访问?ASP.NET源代码网站!!!!
- asp.net 网站访问变慢
- ASP.NET网站中Excel访问拒绝
- asp.Net(c#)中实现IP地址限制访问~
- Asp限制IP访问
- 《因为痛,所以叫青春》感
- md5加密
- C指针原理(60)-Ncurses-文本终端的图形
- ARM基础部分解答题
- 多种js刷新页面的方法
- 【转载】ASP.NET网站限制访问频率
- 程序员2014年未来展望八个小小技巧
- ubuntu 中制作init ramdisk 时候的mkinitrd的问题"mkinitrd command not found"
- 挨踢职场求生法则
- 盗版XP成主要恶意攻击对象
- Linux signals
- 十一、Qt新对话框创建与销毁
- 前端开发JS优化技巧
- 即便是感情的表露也是含蓄的