首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 计算机考试 > 认证考试 > 微软认证 >

解读IE8RC1中改进版本的XSS过滤器

2009-02-19 
微软公司于1月26日发布了IE8 RC1,以下是IE8 RC1中XSS过滤器功能的改进以及bug修复:

  ·根据系统所在区域,强化URL过滤器:
  包含某些字节序列的URL能够在某些地区通过Beta 2过滤器,例如,位于中国的系统,以下格式的URL就能绕过过滤器:
  http://www.fabrikam.com?x=%A0<script>alert();</script>
  该过滤器在URL通过正则表达式引擎之前对URLEncoding进行解码, 在原本的0xA0字节后面加上0x3C字节(“<”)能够使MultiByteToWideChar 失效,这是因为在中国和其他地方, 0XA0 0x3C不是有效的多字节字符。在这种情况下,这些失效能够联合起来使正则表达式匹配不能区分大小写,更糟糕的是,在正则表达式代码的后节点, 0xA0 0x3C序列将被解译为单一的多字节字符,因此,<字符将不会从输入内容中被发现,相应的启发式也不会检测到XSS。
  新发布的IE8 RC1让正则表达式代码将所有输入内容作为单个字节串来处理,在默认字符代码(可以是多字节)中没有字符。
  ·HTTP响应中的NULL将导致处理器忽略对大块HTTP响应数据
  相关缓冲区类别是代码中的rev’d以解决此问题。
  ·增加保护功能以抵御涉及PHP的stripslashes函数攻击情况
  PHP的stripslashes 功能能够删除输入内容中的反斜线(它也可以用单一反斜线取代双反斜线),对于PHP开发者而言,经常在输出字符串前呼叫 stripslashes函数,在这些情况下,如果输出内容启动了服务端的XSS跨站脚本漏洞,漏洞仍然可以被滥用,尽管有IE8 XSS过滤器。
  以下是XSS Filter Architectural Overview(XSS过滤器架构概览)一文中所讨论到的示例:
  上面讨论的解码过程是很灵活的,也可以为不同网络平台制品进行解码。必要的话,该过滤器可以生成额外的签名(根据相同输入数据的不同的解译)。例如,由于不合式的URLEncoded字符可能被不同的网络平台进行不同的处理,因此过滤器必须能够建立适当的签名。
  这说明了新功能的表现,该过滤器现在可以生成额外签名,必要时能够为输入内容的不同解译进行过滤。这些新签名旨在弥补PHP的stripslashes函数功能的不足之处。
  似乎现在大家都不推荐使用PHP的“神奇引号”,如果是因为神奇引号功能而使用PHP代码的stripslashes函数功能,那么就要预想到stripslashes在网络的使用将会下降。
  ·增加overlong UTF-8 服务器的保护功能
  与上面讨论的PHP函数Stripslashes变化相类似,如果在输入中鉴定出超长的UTF-8序列,我们现在可以生成并处理额外签名。
  虽然超长的UTF-8已经在RFC 3629中明确禁止了,但在web服务器平台还不是特别普遍,还不能解决我们代码中的这个攻击矢量。
  ·增强对防止注入FORM和ISINDEX保护功能
  虽然总的来说,微软没有阻止通用HTML注入,不过微软对这两个可以启动与攻击情况(注入脚本攻击)类似的因素已经提高了警惕。
  ·OBJECT标签的CODETYPE属性现在与TYPE属性一样
  OBJECT标签的CODETYPE属性能够提供和TYPE属性一样的功能,IE8 RC1中,这两个属性是平起平坐的。
  ·一般性能改善
  例如:预验证功能更够避免某些情况下正则表达式对性能的影响。

 


3COME考试频道为您精心整理,希望对您有所帮助,更多信息在http://www.reader8.com/exam/

热点排行