扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
以下是代码片段: <% Function Encrypt (id) StrR="" Chk=0 For x=1 to len(id) StrR=StrR&chr(95+x+cint(mid(id,x,1))) Chk=Chk+Cint(mid(id,x,1)) Next Chk=Chk mod 26 StrR=StrR&chr(95+chk) Encrypt=StrR End Function Function Decrypt(str) StrR="" For x=1 to len(str)-1 u=(asc(mid(str,x,1))-x-95) StrR="" For x=1 to len(str,x,1))-x-95 u=(asc(mid(str,x,1))-x-95) StrR=StrR&u Next Chk=Chk mod 26 if right(str,1)<>chr(95+chk) then response.write "验证错误" response.end end if Decrypt=StrR End Function %> |
调用Encrypt(1235)得到acehj("aech?")时,只有?为j时能得到正确结果1234,除此之外的任何字符都将返回"现验证错误"。
通过这样的保护变化,客户访问的就是news.asp?id=acehj.无法看到实际id为1235,随机生成的id又无法通过验证过程,就无法通过软件模拟来制造多线程的合法访问,避免因为非法访问使得数据库资源耗尽而拒绝服务。另外,在这样的保护下,SQL lnjection漏洞也得到了很好的防御。
这仅仅是个示范代码,这个函数还有许多可以改进的地方:
1)可以增加函数变化的强度,降低函数被猜测出具体过程的概率。
2)可以把函数运用到Cookie中,对于Cookie做相应的变化,增加防御手段的隐蔽性。
3)可以把客户IP加入函数运算,不光节约增强了函数强度,还达到防止盗链的功能。一旦用户改变IP或伪造COOKIE及ID,马上就发现
4)可以把时间加入函数运算,不光节约服务器的存储空间,而且服务器只要通过对客户发送的字符串进行解码就能判断出客户信息。
程序可以改进的地方还有好多每虽然能从多方面保护服务器,但也要注意使用方法,比如第四点提到的对空间的节约,就需要考虑空间和时间综合因素。
2:在代码层提高程序运行效率,增加服务器运行能力,减少被拒绝服务的可能。程序代码非常关键,实现同样的功能,代码的好坏,效率差别极大,这里有两个添加数据的代码大家比较下:
代码一
以下是代码片段: <% sql="select * from users" rs.open sql,conn.1.3 rs.addnew rs("username")="TEST" rs("password"="123456" rs.updatw rs.close %> 代码二 <% sql="insert into users (username,password) values (’TEST’,’!23456’)" rs.open sql,conn,1,3 %> |
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。