新书推介:《语义网技术体系》
作者:瞿裕忠,胡伟,程龚
   XML论坛     W3CHINA.ORG讨论区     计算机科学论坛     SOAChina论坛     Blog     开放翻译计划     新浪微博  
 
  • 首页
  • 登录
  • 注册
  • 软件下载
  • 资料下载
  • 核心成员
  • 帮助
  •   Add to Google

    >> VoiceXML, CCXML, OpenVXI
    [返回] 中文XML论坛 - 专业的XML技术讨论区XML.ORG.CN讨论区 - 高级XML应用『 XML在语音技术中的应用 』 → iis安全---防范SQL注入式攻击[转帖] 查看新帖用户列表

      发表一个新主题  发表一个新投票  回复主题  (订阅本版) 您是本帖的第 6620 个阅读者浏览上一篇主题  刷新本主题   树形显示贴子 浏览下一篇主题
     * 贴子主题: iis安全---防范SQL注入式攻击[转帖] 举报  打印  推荐  IE收藏夹 
       本主题类别:     
     iisutm3 帅哥哟,离线,有人找我吗?
      
      
      等级:大一新生
      文章:15
      积分:99
      门派:XML.ORG.CN
      注册:2009/7/9

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给iisutm3发送一个短消息 把iisutm3加入好友 查看iisutm3的个人资料 搜索iisutm3在『 XML在语音技术中的应用 』 的所有贴子 引用回复这个贴子 回复这个贴子 查看iisutm3的博客楼主
    发贴心情 iis安全---防范SQL注入式攻击[转帖]

    iis安全---防范SQL注入式攻击

    原文:www.iisutm.com


    网站要怎么防范最最常见SQL注入式攻击呢,我们先从SQL注入式攻击的原理来说起。

    网站遭受SQL注入式攻击的基本原理:


    1.没有正确过滤特殊字符,例如单引号和分号
    如果你的sql语句是这样,又没过滤“’”单引号:
    "SELECT * FROM tables WHERE param = '" + RequestString+ "'; "
    攻击者将用户名变量(即RequestString)设置为:
    a' or 't'='t

    此时原始语句发生了变化:
    SELECT * FROM tables WHERE param = 'a' OR 't'='t';

    如果这种代码被用于一个认证过程,那么这个例子就能够强迫选择一个合法的用户名,因为赋值't'='t永远是正确的。
    这种方式是跳过身份认证的最简单手段

    再配合“;”分号可以进行更多的sql注入攻击
    ";"分号用来执行多个语句。下面语句中的RequestString的值将会导致删除“tables”表,
    又可以从“dataTables”表中选择所有的数据(实际上就是透露了每一个用户的信息)。
    a'; DROP TABLE tables; SELECT * FROM dataTables WHERE param LIKE '%

    这就将最终的SQL语句变成下面这个样子:
    SELECT * FROM tables WHERE param = 'a'; DROP TABLE tables; SELECT * FROM dataTables WHERE param LIKE '%';

    通过这种原理可以执行很多很多攻击了。

    2.不正确处理变量类型

    如果一个用户提供的字段并非一个强类型,或者没有实施类型强制,就会发生这种形式的攻击。当在一个SQL语句中使用一个数字字段时,如果程序员没有检查用户输入的合法性(是否为数字型)就会发生这种攻击。

    例如:“SELECT * FROM tables WHERE id = " + RequestID + "; "

    从这个语句可以看出,作者希望RequestID是一个数字。
    不过,如果终端用户选择一个字符串,就绕过了对转义字符的需要。
    例 如,将RequestID设置为
    1; DROP TABLE tables
    就不需要上面说的“‘”单引号了,照样可以进行攻击:会将“tables”表从数据库中删除,
    SQL语句变成:SELECT * FROM DATA WHERE id = 1; DROP TABLE users;

    网站遭受SQL注入式攻击的基本方式:

    1.最常见的也就是在查询字符串中直接输入SQL攻击字符串。

    例如:page.asp?id=Num and exists (select * from [admin])

    2.其次就是在FORM表单中提交的SQL注入攻击字段。

    3.通过COOKIE绕过一些放注入的脚本程序

    例如:javascript:alert(document.cookie="id="+escape("这就是asp? id=xx后面xx代表的数值) and (这里是注入攻击代码)"));

    4.还有就是上面几种的攻击通过16进制编码后,绕过SQL注入检测的脚本程序

    page.asp?id=Num;DeCLaRE @S NvArCHaR(4000);SeT @S=CaSt(0x4400650063006C0061007200650020004000540020005600610072006300680061007200280032003500350029002C0040004300200056006100720063006800610072002800320035003500290020004400650063006C0061007200650020005400610062006C0065005F0043007500720073006F00720020004300750072007300'

    这种可以跳过敏感字符的判断和SQL关键词的判断。

    总结一下,要防止SQL注入主要是要在查询字符串(QueryString),表单数据(PostData)以及Cookie甚至HTTP报头(Header)中防止掉一些特殊字符(单引号,分号)以及SQL语言的关键字,以及防止他们使用16进制编码。

    用ASP或者PHP脚本来实现上面的这些想起来就很麻烦。下面就来介绍下用一个第三方工具IISUTM来处理上面我们说到的问题。

    准备工作:先去www.iisutm.com下载最新的IISUTM版本。

    根据IISUTM网站防火墙安装及操作手册 中的说明把IISUTM部署到你的服务器上来,这里需要注意的是使用Windows 2003+iis6的服务器,需要开启iis中“以IIS5.0 隔离模式运行 www 服务”选项才能正常使用该软件。

    安装完成,通过浏览器访问IISUTM的配置管理界面默认的是http://127.0.0.1:8362,这个是私有地址,只能在该服务器上访问,你需要任何地方都能访问的话,可以在安装的时候IP地址的选项那里填入你服务器的公网IP地址,和你所开放的端口。这样你就可以通过你配置的地址进行访问,或者你可以在iis中直接管理名为IISUTM的站点。

    登陆管理界面后点击上面导航栏中的“基本设置”,然后点击左边菜单的“防SQL注入”链接。

    开启该链接里所有的选项,选中之后IISUTM会自动保存配置,下面的SQL注入关键字是该软件提供的SQL注入关键字以及特殊符号的特征库,你可以根据你网站的情况进行更改(最好不要修改)。IISUTM会自动拒绝16进制的编码。

    确认以上的配置以后,你可以返回到IISUTM管理界面的首页,这里会列出最近服务器遭受到的攻击以及详细,赶紧去看看你的网站是不是随时有人在进行SQL注入吧,以及哪些攻击被IISUTM处理掉了。


       收藏   分享  
    顶(0)
      




    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2009/7/9 12:14:00
     
     GoogleAdSense
      
      
      等级:大一新生
      文章:1
      积分:50
      门派:无门无派
      院校:未填写
      注册:2007-01-01
    给Google AdSense发送一个短消息 把Google AdSense加入好友 查看Google AdSense的个人资料 搜索Google AdSense在『 XML在语音技术中的应用 』 的所有贴子 访问Google AdSense的主页 引用回复这个贴子 回复这个贴子 查看Google AdSense的博客广告
    2024/4/27 17:08:33

    本主题贴数1,分页: [1]

    管理选项修改tag | 锁定 | 解锁 | 提升 | 删除 | 移动 | 固顶 | 总固顶 | 奖励 | 惩罚 | 发布公告
    W3C Contributing Supporter! W 3 C h i n a ( since 2003 ) 旗 下 站 点
    苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
    62.500ms