博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
再谈“ASP.NET网站限制恶意访问”
阅读量:6923 次
发布时间:2019-06-27

本文共 1575 字,大约阅读时间需要 5 分钟。

  1. 采用Cookie记录验证码是最方便的方式,无论是从开发成本还是从维护、运营成本来看,都是性价比最高的。在不至于太严格要求的网站中,建议采用Cookie的方式。
  2. 验证码如果需要存入Cookie中,需要加密。加密方式有很多,最普通的是md5。但是现在网上已有很多md5密码数据库(如 ),有的甚至提供API,所以单纯只使用md5是靠不住的。在我的加密中,我将传统生成md5的方式做了一些修改,基本能够保证恶意访问者无法通过加密的Cookie来获取到真实验证码。
    public  static string GetMd5(string str)    {    string cl =DateTime.Now.Month+ str + DateTime.Now.Day;//将真实验证码加上前缀与后缀后再加密;    string pwd = "";    MD5 md5 = MD5.Create();//实例化一个md5对像    // 加密后是一个字节类型的数组,这里要注意编码UTF8/Unicode等的选择    byte[] s = md5.ComputeHash(Encoding.UTF8.GetBytes(cl));    s.Reverse();    //翻转生成的MD5码    // 通过使用循环,将字节类型的数组转换为字符串,此字符串是常规字符格式化所得    for (int i = 3; i < s.Length-1; i++) //只取MD5码的一部分;恶意访问者无法知道我取的是哪几位。    {    // 将得到的字符串使用十六进制类型格式。格式后的字符是小写的字母,如果使用大写(X)则格式后的字符是大写字符    pwd = pwd + (s[i]<198?s[i]+28:s[i]).ToString("X"); // 进一步对生成的MD5码做一些改造。    }    return pwd;    }
  3. 限制频繁访问是一定要做的。
    在我的网站中,正常访问的用户不可能在4小时内访问200次以上。这是有统计来源的。根据我采用的一些统计代码,我发现访问最频繁的用户,在4小时内访问的最大值仅为76次,而且这是一个最特殊的特例而已。
    所以如果我一旦发现有用户在4小时内访问太多次数, 几乎就可以判断他为恶意用户。
    这不是一个最绝对的判断方式,但仍然是可行性最高、成本最低的。
  4. 限制频繁访问的方式,使用Cache最好,使用XML最次。
    在一文中,我提出了使用Cache来记录用户的IP、访问方式、访问次数。这也是参考了很多大型网站防止DoS攻击的方式。
    有朋友提出,使用Cache或许会造成服务器资源开销,建议使用XML;如果XML太大,可以分成零碎模块。
    我的观点是,XML文件的效率确实太差。以前我测试过,十万行数据的XML文件,一次读写操作就接近1秒,更不用说网站的频繁访问、需要频繁操作XML文件了。然后同样的十万条Cache数据,占用内容仅为几十M(如一条数据占用1k内存,十万条占用100M;然后实际操作中,1条数据远没有1k),处理速度在10毫秒内。
    不仅如此,就算我们把访问记录到XML文件中,我们对它进行读写操作,也是要将它载入内存的。而十万行数据的XML文件,与十万行Cache中的KeyValue对,占用的内存也是不能同日而语的。
    综上所述,使用XML文件进行记录,不仅不能够减少服务器压力(内存、硬盘、CPU计算次数),反而还增加了服务器压力、大大增加了请求响应时间。最好的方式仍然是使用Cache。
本文转自 流牛木马 博客园博客,原文链接:http://www.cnblogs.com/azure/archive/2009/09/20/1570428.html,如需转载请自行联系原作者
你可能感兴趣的文章
YUM仓库服务与PXE网络装机
查看>>
SEO搜索引擎优化
查看>>
android 过程
查看>>
Python 函数的参数
查看>>
实战:OSPF和EIGRP路由再发布
查看>>
mySQL教程 第12章 MySQL用户和权限管理
查看>>
this 学习笔记
查看>>
360浏览器兼容模式无法弹出layer对话框问题
查看>>
linux的ssh服务
查看>>
关于我的第一个网站www.webtv520.com随笔
查看>>
组播实验
查看>>
空指针和野指针
查看>>
VMware虚拟机桥接方式与真实主机共享上网
查看>>
如何解决SVN Commit failed (details follow): Access denied
查看>>
最新LAMP×××网站平台PHP5.5.1 + Apache2.4.6 + mysql5.6.12
查看>>
看《中国好声音》,学职场生存铁律!
查看>>
ligerFilter.js每次打开绑定不同字段列表
查看>>
ISCSI服务的配置与管理
查看>>
greenplumn----------单机2segment安装
查看>>
第八单元系统服务的控制
查看>>