扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
微软公司于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中,这两个属性是平起平坐的。
·一般性能改善
例如:预验证功能更够避免某些情况下正则表达式对性能的影响。
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者