注意字符集导致浏览器软件的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浏览器,可以避免这样的问题。