注册通行证 用户名 密码
  • 文章投稿
  • 博客
  • 论坛
  • 设为首页
  • 加入收藏
jztop.com网络技术
  • 首页
  • | iT新闻
  • | 操作系统
  • | 组网建网
  • | 网络安全
  • | 程序开发
  • | 办公一族
  • | 工具软件
  • | 网页制作
  • | 多媒体制作
  • | 网吧技术
  • | 服务器
  • | 专题教程
Vista | 软件评测 | 系统备份 | 优化 | 进程 | 聊天 | 病毒 | Linux | 黑客 | 防火墙 | 数据库 | Web开发 | Java | Word | 游戏 | 32位开发 | 移动开发
当前位置:首页 > 网络安全 > 安全防范 > 网络技术 内容正文:真正安全起来 网页脚本攻击防范全攻略

真正安全起来 网页脚本攻击防范全攻略

发布时间:2006-08-04 18:22:35 来源:友佳学院 网友评论 0 条
    近来,网络上的SQL Injection 漏洞利用攻击,JS脚本,HTML脚本攻击似乎逾演逾烈。陆续的很多站点都被此类攻击所困扰,并非像主机漏洞那样可以当即修复,来自于WEB的攻击方式使我们在防范或者是修复上都带来了很大的不便。HOOO…… 一个站长最大的痛苦莫过于此。自己的密码如何如何强壮却始终被攻击者得到,但如何才能做到真正意义上的安全呢?第一,别把密码和你的生活联系起来;第二,Supermaster的PWD最好只有你自己知道;第三,绝对要完善好你的网站程序。然而怎样才能完善,这将是我们此文的最终目的。 

  安全防护,如何做到安全防护?想要防护就要知道对方是如何进行攻击。有很多文章都在写如何攻下某站点,其实其攻击的途径也不过是以下几种: 

  1. 简单的脚本攻击 

  此类攻击应该属于无聊捣乱吧。比如****:alert(); </table>等等,由于程序上过滤的不严密,使攻击者既得不到什么可用的,但又使的他可以进行捣乱的目的。以目前很多站点的免费服务,或者是自身站点的程序上也是有过滤不严密的问题。 

  2. 危险的脚本攻击 

  这类脚本攻击已经过度到可以窃取管理员或者是其他用户信息的程度上了。比如大家都知道的cookies窃取,利用脚本对客户端进行本地的写操作等等。 

  3. Sql Injection 漏洞攻击 

  可以说,这个攻击方式是从动网论坛和BBSXP开始的。利用SQL特殊字符过滤的不严密,而对数据库进行跨表查询的攻击。比如: 

  http://127.0.0.1/forum/showuser.asp?id=999 and 1=1 

  http://127.0.0.1/forum/showuser.asp?id=999 and 1=2 

  http://127.0.0.1/forum/showuser.asp?id=999 and 0<>(select count(*) from admin) 

  http://127.0.0.1/forum/showuser.asp?id=999’; declare @a sysname set @a=@#xp_@#+ @#cmdshell@# exec @a @#dir c:/@#---&aid=9 

  得到了管理员的密码也就意味着已经控制的整站,虽然不一定能得到主机的权限,但也为这一步做了很大的铺垫。类似的SQL Injection攻击的方式方法很多,对不同的文件过滤不严密所采取的查询方式也不同。所以说想做好一个完整的字符过滤程序不下一凡功夫是不可能的。 

  4. 远程注入攻击 

  某站点的所谓的过滤只是在提交表格页上进行简单的JS过滤。对于一般的用户来说,你大可不必防范;对早有预谋的攻击者来说,这样的过滤似乎根本没作用。我们常说的POST攻击就是其中一例。通过远程提交非法的信息以达到攻击目的。 

  通过上面的攻击方法的介绍,我们大致的了解了攻击者的攻击途径,下面我们就开始重点的介绍,如何有效的防范脚本攻击! 

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

  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 

  程序体(3) 

  有了上面的过滤函数您可以在任何需要过滤的地方应用过滤函数直接使用就可以了。这就使我们的修复工作大大的简化了。 

  另外,我想在这里再次多提醒一下,一些站点的UBB在进行小的表情图标转化时也会出现过滤问题,由于很隐蔽所以不容易发现: 

  如: 

  我们标签内的文字进行修改, 

  不知道各位看懂没,前一个单引号用来中和程序提供的左引号,第二个单引号用来中和闭合的右引号,这样程序输出就为: 

  <img src=’img/0001.gif’ onerror=****:alert(); alt=’’> 

  如果图片不存在,那么将激活onerror标签执行脚本程序。对于已经过滤了单引号的站点在这里用双引号一样可以完成。对于过滤了****字段的,只用alert()也完全可以。所以说要过滤就要过滤完全,别给攻击者留下一丝机会。 

相关文章
  • 与手机有关的三项QQ密码保护服务介绍
  • 天下互联完成第二轮融资 金额2400万美元
  • QQ密码找回指南新编 带你快速找回QQ密码
  • 一心只为杀流氓 专心只为净网络
  • 做google推广,如何选择好关键词?
【评论】【收藏本文】【打印】【关闭】
上一篇文章:动态嵌入式DLL木马发现与清除方法
下一篇文章:安全防范:网站暗藏木马能奈之我何?
讨论区
查看
已有 0 位对此新闻感兴趣的网友发表了看法
匿名发表
注册通行证 登陆
图文阅读推荐
驱除危害:如何有效防范看不见的网页病毒
驱除危害:如何有效防范看不见的网页病毒
防止别人用ipc$和默认共享入侵
防止别人用ipc$和默认共享入侵
防范非法用户的侵入
防范非法用户的侵入
将拒绝进行到底 阻击垃圾邮件全攻略
将拒绝进行到底 阻击垃圾邮件全攻略
推荐阅讯
  • 最容易被黑客盯上的注册表位置
  • 恶意代码自己破解!两则攻击伎俩细剖析
  • 打造防卫系统 构筑2006网络安全堡垒
  • 电脑高手利用木马破解网上银行盗3万
  • 简单设置 轻轻松松防范ICMP攻击
  • 高手必读 网络端口安全防护技巧放送
  • 经验分享:网吧频繁掉线(ARP)与解决方法
  • 如何防范恶意网站
  • MSN间谍软件下载量翻了四五倍
  • 网络安全入门:灰色软件的症状与防范
阅读排行
  • 1.防ARP攻击教程
  • 2.经验分享:网吧频繁掉线(ARP)与解决方法
  • 3.加强安全防范 精通批处理完整教程
  • 4.局域网攻、防工具详解
  • 5.流氓网站招招看 详细剖析恶意弹出窗口
  • 6.让黑客无处下手 未知漏洞的预防技巧
  • 7.保护系统“核心” 锁住“危险”设置
  • 8.网吧频繁掉线(ARP)与快速解决方法
  • 9.金钟罩护身 个人电脑安全二十招秘技
  • 10.最佳的75个安全工具
专题教程
  • 大话G游 专题:手机病毒揭密
  • ARP攻击防范与解决方案 路由故障处理手册
  • Picasa中文版_Picasa教程 专题:清除流氓软件
  • Firefox专题 seo搜索引擎优化专区
  • 重装Windows必知的事情 装机之必备软件大行动
病毒专杀栏
  • 杀毒软件反被病毒杀 连"救命"都不能喊
  • 金山ARP防火墙
  • 还原卡神话破灭“机器狗”病毒来势汹汹
  • cctv经济半小时:你的手机现在安全吗?
  • 新挂马方式开始流行 ARP挂马称雄局域网
  • 木马和病毒清除的通用解法
  • IP地址不再冲突 查找ARP攻击者元凶
  • 教你几招识别和防御Web网页木马
  • 分析:封杀BT只是暂时的止痛药
  • QQ爆危险漏洞,“QQ游戏邀请大盗”邀请你玩病
关于我们 | 诚聘英才 | 联系我们 | 版权声明 | 网站大事 | 网站地图 | 意见建议
CopyRight 2005-2007 Jztop.Com 版权所有 未经许可 请勿转载