学习首页 百科 人生课堂 办公软件 英语学习 操作系统 故事会 编程资料 软件学习 设计
铭瑶网 >> 学习首页 >> 系统 >> 网页脚本攻击防范全攻略4
标题:网页脚本攻击防范全攻略4

【字体: 】 时间:2008-4-11 来源:互联网 作者:study

网页脚本攻击防范全攻略4

程序体(8)  

  由于我个人的编程习惯,我喜欢将所有的数据检验程序全部保留到整站的公用程序中,比如:conn.asp啦,只需要写一次就可以修复全站的问题. 
  说到这里,我提一点关于攻击的问题,就是跑用户密码或者是用户名,一般常用的就是 
  ….../show.asp?id=1 and 0<>(select count(*) from admin where id=3 and left(username,1)=’a’) 
  这样去一个一个尝试,当然我们不能在这里提什么Perl程序去跑密码,程序是别人写,要自己知道原理.这里我只是想给个比较方便的办法就是取ASC码范围.这个要比单独跑要快很多.不论是是字母,数字,汉字,特殊字符,他们总会有对应的ASC码,用以下办法: 
  ….../show.asp?id=1 and 0<>(select count(*) from admin where id=3 and asc(right(left(usernamee,3),1)) between 1 and 10000) 
  剩下的就随你了,一般的从97到122就可以啦,字母嘛,很快D.呵呵,有人想用mid 函数当然也是不错 asc(mid(username,2,1)) between 1 and 10000 也成. 
  如何更加有效的防止SQL注入攻击?我们将在下面的文章中具体提到! 
  l 防范远程注入攻击 
  这类攻击在以前应该是比较常见的攻击方式,比如POST攻击,攻击者可以随便的改变要提交的数据值已达到攻击目的.又如:COOKIES 的伪造,这一点更值得引起程序编写者或站长的注意,不要使用COOKIES来做为用户验证的方式,否则你和把钥匙留给贼是同一个道理. 
  比如: 
  If trim(Request. cookies ("uname"))="fqy" and Request.cookies("upwd") =”fqy#e3i5.com” then   ……..more………   End if 
  我想各位站长或者是喜好写程序的朋友千万别出这类错误,真的是不可饶恕.伪造COOKIES 都多少年了,你还用这样的就不能怪别人跑你的密码.涉及到用户密码或者是用户登陆时,你最好使用session 它才是最安全的.如果要使用COOKIES就在你的COOKIES上多加一个信息,SessionID,它的随机值是64位的,要猜解它,不可能.例: 
  if not (rs.BOF or rs.eof) then   login="true"   Session("username"&sessionID) = Username   Session("password"& sessionID) = Password   ‘Response.cookies(“username”)= Username   ‘Response.cookies(“Password”)= Password 
  下面我们来谈谈如何防范远程注入攻击,一般的攻击都是将单表提交文件拖到本地,将Form ACTION=”chk.asp” 指向你服务器中处理数据的文件即可.如果你全部的数据过滤都在单表页上,那么恭喜你,你将已经被脚本攻击了. 
  怎么才能制止这样的远程攻击?好办,请看代码如下: 程序体(9) 
  <%   server_v1=Cstr(Request.ServerVariables("HTTP_REFERER"))   server_v2=Cstr(Request.ServerVariables("SERVER_NAME"))   if mid(server_v1,8,len(server_v2))<>server_v2 then   response.write "<br><br><center>"   response.write " "   response.write "你提交的路径有误,禁止从站点外部提交数据请不要乱该参数!"   response.write " 
"   response.end   end if   %> 
  ‘个人感觉上面的代码过滤不是很好,有一些外部提交竟然还能堂堂正正的进来,于是再写一个. 
  ‘这个是过滤效果很好,建议使用. 
  if instr(request.servervariables("http_referer"),"http://";&request.servervariables("host") )<1 then response.write "处理 URL 时服务器上出错。如果您是在用任何手段攻击服务器,那你应该庆幸,你的所有操作已经被服务器记录,我们会第一时间通知公安局与国家安全部门来调查你的IP. "   response.end   end if 
  程序体(9) 
  本以为这样就万事大吉了,在表格页上加一些限制,比如maxlength啦,等等..但天公就是那么不作美,你越怕什么他越来什么.你别忘了,攻击者可以突破sql注入攻击时输入框长度的限制.写一个SOCKET程序改变HTTP_REFERER?我不会。网上发表了这样一篇文章: 
  ------------len.reg-----------------   Windows Registry Editor Version 5.00   [HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\MenuExt\扩展(&E)]   @="C:\Documents and Settings\Administrator\桌面\len.htm"   "contexts"=dword:00000004   -----------end----------------------   -----------len.htm------------------      ----------end----------------------- 
  用法:先把len.reg导入注册表(注意文件路径) 

查看/参与:讨论/评论 相关文章:服务器