请教高手什么叫“字符编码循环漏洞”今天无意间看到,不理解,有知道的给说一下呵呵
解决方案 »
- php 怎样用循环得到一个用户下级及下下级,下下下级...的总人数,下面是我写的一个函数,但结果不正确,谁帮忙看看啊
- 求助一个诡异的写文件的问题.希望大家能帮忙看看....
- php1 post php2,php2中$_POST没数据$_GET有数据
- 求一 SQL语句
- 奇怪的post, 麻烦一下?
- index.php动态首页处理完数据然后转发到静态首页index.html会影响SEO吗?
- 请各位帮忙讲解下 PHP中'@' 符号的用法
- php是否可以读取ASP写的COOKIE,如何读?急,请大家帮帮我!
- 问一个参数传递的超菜问题?
- windows下整合apache1.3.27和php4.2.2后变量传不过去,为什么呢?
- 继续问,关于query("set names 字符集")引起的其他问题
- 我这小段代码里面的SQL语句真的有错吗?为什么总报SQL语句有错?
该漏洞最早2006年被国外用来讨论数据库字符集设为GBK时,0xbf27本身不是一个有效的GBK字符,但经过 addslashes() 转换后变为 0xbf5c27,前面的0xbf5c是个有效的GBK字符,所以0xbf5c27会被当作一个字符0xbf5c和一个单引号来处理,结果漏洞就触发了。mysql_real_escape_string() 也存在相同的问题,只不过相比 addslashes() 它考虑到了用什么字符集来处理,因此可以用相应的字符集来处理字符。在MySQL 中有两种改变默认字符集的方法。方法一:改变mysql配置文件my.cnfCODE:[client]
default-character-set=GBK方法二:
在建立连接时使用CODE:
SET CHARACTER SET 'GBK'例:mysql_query("SET CHARACTER SET 'gbk'", $c);问题是方法二在改变字符集时mysql_real_escape_string() 并不知道而使用默认字符集处理从而造成和 addslashes() 一样的漏洞详细地址:
http://www.sai52.com/archives/493/