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