|
|
昨天我因为我网站(http://freesms.cloudapp.net )收到了恶意攻击,我发布了ASP.NET网站限制访问频率一文,引起了博客园各位高手的激烈讨论,很多朋友朋友提出了一些疑问与改进意见,我感到非常开心。后来我也继续思考了很多,现将我的想法写下来,希望高手们再来看看,不吝赐教。o(∩_∩)o
在众多网友中,最需要感谢的是在博客园网友王玮。你的由“ASP.NET网站限制访问频率”想到的两点问题 一文中,提到了两个问题:第一是验证码不能够明文存在Cookie中;第二是IP地址可以欺骗某些验证方式。
这两个问题非常好,非常感谢 。 第一个问题确实存在的,我现在已经用了加密,已经不能够绕过验证了。第二个问题对于我的系统来说是不存在的,因为我的代码中并没有使用你说的那两种获取IP的方式,你无法欺骗我的系统。
总结了大家的观点,我们主要做以下几点讨论:
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; }
暂时就这些吧。。希望大家继续给点意见,也可以去我的网站(http://freesms.cloudapp.net/)试试,看你能不能够找到漏洞进行破解 。o(∩_∩)o 非常感谢博客园的朋友,跟你们交流我非常开心!