注意字符集导致浏览器软件的XSS攻击

注释:在一般的Web程序中,当向浏览器显示数据时,您将指定一个字符集。在家里,我们通常使用UTF-8,GBK,GB2312等。字符集说明浏览器应该把返回的数据。GB2312和GBK字符集的应用非常广泛,但它已被证明,IE有问题时,应对这些宽字符集,造成可能的方案






在一般的Web程序中,当向浏览器显示数据时,我们将指定一个字符集。在家里,我们通常使用UTF-8,GBK,GB2312等。字符集说明浏览器应该把返回的数据。GB2312和GBK字符集的应用十分广泛,但它证明了存在的问题,在处理这些宽字符集,即,导致一些安全规则可旁路关闭程序,导致XSS的严重的安全漏洞。在伊江,如果它遇到一个字符,它是指定的字符集。第一次,会认为其后续字符和当前字符构成一个合法的字符,所以它是Javascript的分析处理,包括HTML标签,CSS会这么做,对IE6和IE7测试版。



一些js的1个旁路检查规则





HTML }

{头}

{标题} {或} 80sec测试题

{元http-equiv =内容类型内容=文本/ HTML;字符集GB2312基本上

{头/ }

{体}

{剧本}

窗口。误差=函数(){

警报('vul);

返回true;

}

{脚本}

{ } { PHP脚本x =回声CHR(0xc1);Y{ user_in_put };{ } /脚本;

{主体}

{ }





即使我们过滤了诸如之类的字符



2旁路的某些特性的检查规则



为了避免造成漏洞的HTML直接使用,一些论坛UBB标签和应用程序,但GBK等多字节编码下,也容易有问题。以UBB标签是最容易出现的问题为例。





颜色= XYZ { php echo CHR(0xc1);} } { } {颜色/颜色= ABC onmouseover =警报

( / / XSS)S = { php echo chr(0xc1);} } {或}利用颜色



0xc1是一个GB2312的第一个字节,和上面的结果将被转换为:



字体颜色=XYZ } { } { /字体字体颜色=ABC onmouseover =警报( / / XSS)= }

被利用的{ }

其中

警报( / / XSS)



一个事件会做的,所以即使UBB标签变得不安全,它可以保护。很多论坛不重视这个,phpwind、移动网络和其他论坛都容易受到这种攻击。Discuz修补了安全问题,通过附加一个空间转换的结果。这里的UBB标签上有一个很有趣的提示在使用,因为有些人会放弃数据库不字符用指定的字符集匹配,所以必须用回}字符如形成有效的汉字可以存储到数据库中,当然,这样就没有问题了访问,此外一些语言将字符串时,字符串处理字符集类型,非法字符性格会导致失败或转码被丢弃,所以它不能使用这种类型的攻击。



3个小例子



PHPWind论坛charset跨站脚本漏洞





{电子邮件= XXXX { /电子邮件} {电子邮件= XXXX onmouseover =警报(S =)功率}我{ /邮件}

{字体=宋体;0xc1 } {或} XX XXX字体





电源是一个特殊的十六进制编码和反}的字符组合,第一种方法可以直接复制:



0xc1代表116进制字符编码



它也很容易产生XSS代码如下在Dvbbs Forum





xxxxxxxxxxx { /字体}





测试的新版本和旧版本都通过了。



4关于修复



对于程序员来说,由于对UTF-8字符集的可靠性,不存在这样的安全漏洞,所以你设计网站时,你可以考虑使用UTF-8字符集。



对于广大开发者,可以保持最小的输入是等于最大的安全原则,范围,当输入约束匹配的规律特征,尝试匹配的ASCII字符,如果你必须使用中文,可以考虑类似Discuz在中国后面添加空间修复问题。



对于用户来说,这个漏洞可以通过浏览器处理页面字符来考虑,比如Firefox浏览器,可以避免这样的问题。