当前位置: 首页 > 图文教程 > 网络安全 > 安全基础 > 网页脚本攻击防范全攻略(1)

安全基础
IE浏览器防黑十大秘籍,黑客也没招
网络工程师讲解系统安全漏洞的形成和防治
清除导致XP系统反复重启的新网银木马
识破QQ欺骗网络地址的几种方法汇总
安全基础知识 细说暴库的原理与方法
排除无线突然中断故障实例
强搜天线 搜出WiFi世界的安全漏洞
网管应用技巧 内网安全十大策略说明
如何修改局域网内部打印机的IP地址
如何找出IIS中隐藏的网站
EFS加密技术的概念分析及一次解密经过
提高Windows XP系统安全性要关闭的10种服务
PHPBB 2.0.22 MOD版最新注入漏洞
修复Windows系统忘记密码的9个高招
用SockOnline软件轻松突破端口限制
安全基础知识 最强0到33600端口详解
执行文件方式加密FLASH文件的解密方法
网吧被入侵后的应对解决方法
网页“黑手”如何攻击你的Windows系统
不要让别人读了你的信 谈私密数据保护

安全基础 中的 网页脚本攻击防范全攻略(1)


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-28   浏览: 39 ::
收藏到网摘: n/a

 近来,网络上的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把函数写在公有页面上,这样效率是最好的。