注册 | 登录
收藏 | 帮助
热门文章
编辑推荐
相关文章  
网络安全之特洛伊木马攻防战略
安全防范:天下无毒-防范病毒11个
安全稳定的实现进线程监控
安全小知识:Rundll.exe是病毒吗?
杀毒软件如何被XP SP2的安全中心
严把安全 切断电脑病毒传播途径
网吧电脑防毒杀毒安全技巧总述
网络病毒危害高 600亿安全市场待
网吧计算机防毒杀毒安全技巧总述
用安全网关轻松搞定蠕虫病毒
您现在的位置: 顶尖设计 >> IT学院 >> 网络安全 >> 安全技巧 >> 文章正文
真正安全起来 网页脚本攻击防范全攻略
作者:佚名  来源:不详  点击:  更新:2006-12-20
简介:

让我们还是从最简单的开始:

  l. 防范脚本攻击 

  JS脚本 和HTML脚本攻击的防范其实很简单:server.HTMLEncode(Str)完事。当然你还不要大叫,怎么可能?你让我把全站类似<%=uid%>都加过滤我还不累死?为了方便的过滤,我们只需要将HTML脚本和JS脚本中的几个关键字符过滤掉就可以了:程序体(1)如下: 

  ‘以下是过滤函数 

  <% 

  function CHK(fqyString) 

  fqyString = replace(fqyString, ">", ">") 

  fqyString = replace(fqyString, "<", "<") 

  fqyString = replace(fqyString, "&#", "&") 

  fqyString = Replace(fqyString, CHR(32), " ") 

  fqyString = Replace(fqyString, CHR(9), " ") 

  fqyString = Replace(fqyString, CHR(34), """) 

  fqyString = Replace(fqyString, CHR(39), "'") 

  fqyString = Replace(fqyString, CHR(13), "") 

  fqyString = Replace(fqyString, CHR(10) & CHR(10), "</P><P> ") 

  fqyString = Replace(fqyString, CHR(10), "<BR> ") 

  CHK = fqyString 

  end function 

  %> 

  ‘以下是应用实例 

  <%=CHK(Username)%> 

  Username=CHK(replace(request(“username”),”’”,””)) 

  使用Include把函数写在公有页面上,这样效率是最好的。

  程序体(1) 

  另外,值得我们注意的是,很多站点在用户注册,或者是用户资料修改的页面上也缺少脚本的过滤,或者是只在其中之一进行过滤,注册进入后修改资料仍然可以进行脚本攻击。对用户提交的数据进行检测和过滤,程序体(2) 如下: 

  ‘以下是过滤函数 

  If Instr(request("username"),"=")>0 or 
  Instr(request("username"),"%")>0 or 
  Instr(request("username"),chr(32))>0 or 
  Instr(request("username"),"?")>0 or 
  Instr(request("username"),"&")>0 or 
  Instr(request("username"),";")>0 or 
  Instr(request("username"),",")>0 or 
  Instr(request("username"),"'")>0 or 
  Instr(request("username"),"?")>0 or 
  Instr(request("username"),chr(34))>0 or 
  Instr(request("username"),chr(9))>0 or 
  Instr(request("username"),"?K")>0 or 
  Instr(request("username"),"$")>0 or 
  Instr(request("username"),">")>0 or 
  Instr(request("username"),"<")>0 or 
  Instr(request("username"),"""")>0 then 
  response.write "朋友,你的提交用户名含有非法字符,请更改,谢谢合作 <a href='****:window.history.go(-1);'>返回</a>" 
  response.end 
  end if 

  程序体(2) 

  为了提供工作效率我们再将过滤内容程序化,这样对多个参数的过滤效率将有很大程度上的提高:如 

  程序体(3) 

  ‘以下为程序主体 

  dim Bword(18) 
  Bword(0)="?" 
  Bword(1)=";" 
  Bword(2)=">" 
  Bword(3)="<" 
  Bword(4)="-" 
  Bword(5)="’" 
  Bword(6)="””" 
  Bword(7)="&" 
  Bword(8)="%" 
  Bword(9)="$" 
  Bword(10)="'" 
  Bword(11)=":" 
  Bword(12)=" " 
  Bword(13)="(" 
  Bword(14)=")" 
  Bword(15)="--" 
  Bword(16)=" chr(9)" 
  Bword(17)=" chr(34)" 
  Bword(18)=" chr(32)" 
  errc=false 

  ‘以下是应用实例部分 

  for i= 0 to ubound(Bword) 
  if instr(FQYs,Bword(i))<>0 then 
  errc=true 
  end if 
  next 
  if errc then 
  response.write "<script language=""****"">" 
  response.write "parent.alert('很抱歉!您的操作违法了);" 
  response.write "history,back();" 
  response.write "</script>" 
  response.end 
  end if 




  • 上一篇文章:
  • 下一篇文章:
  • 分享此文:该页面添加到 Mister Wong 添加到雅虎Yahoo!收藏 Add to:Del.icio.us Post to Furl Digg this 添加到Google书签 reddit spurl blogmarks 365Key 评论  收藏  分享  打印
     我来说两句
    姓名:       验证码:   
    主页: 
    评分: 1分 2分 3分 4分 5分
    本频道近期热评文章:
      关于我们 | 联系我们 | 站点地图 | 广告投放 | 友情链接 | 在线留言 | 版权申明
    版权所有 © 2004-2007 顶尖设计(bobd.cn)
    未经授权禁止转载,摘编,复制本站内容或建立镜像. 沪ICP备07504942号 
    网络110
    报警服务