MySQLaddslashes 及 其他 清除空格的办法是不安全的

扫除空格的方是休安全的,部分缘由是坐字符中的空格非常多,例如
“addslashes的题目在 于黑客
可以用0xbf27来替代单引号,而addslashes只是将0xbf27改动也0xbf5c27,成为一个实惠的多字节字符,其中的0xbf5c仍会
被当做是单引号,所以addslashes无法得逞阻止。”

绝是准现实的参数需求校验确定是 int
等非是,外加数据库的参数操作方法.其实这个是数据库的 sql
问题,应该从源头数据库本身来解决,只不过有些数据库滑提供相应的计罢了.


http://www.2cto.com/Article/201012/80709.html

    PHP几个防SQL注入攻击自带函数分别
    2010-12-24 13:09:22  

   
SQL注入攻击是黑客攻击网站极度常用之手法。如果您的站点没有下严格的用户输入检验,那么常易遭遇SQL注入攻击。SQL注入攻击通常经过为站点数据库提交不良的数据要查询语句来促成,很可能要数据库被之纪录中暴露,更改或者让剔除。

   
为了以防万一SQL注入攻击,PHP自带一个成效可针对输入的字符串进行拍卖,可以以可比底层对输入进行安全及的上马处理,也即Magic
Quotes。(php.ini
magic_quotes_gpc)。如果magic_quotes_gpc选项启用,那么输入的字符串中的单引号,双引号和其它一些字符前用会给机关加
上反而斜杠。

    但Magic
Quotes并无是一个坏通用的解决方案,没能挡所有有地下危险的字符,并且以重重服务器上Magic
Quotes并没给启用。所以,我们还亟需采取另外强方式来预防SQL注入。

    许
多数据库本身就提供这种输入数据处理效果。例如PHP的MySQL操作函数吃产生addslashes()、
mysql_real_escape_string()、mysql_escape_string()等函数,可拿特殊字符和可能滋生数据库操作出错的字
符转义。那么就三单职能函数之间来啊可转为?下面我们尽管来详细描述生。

   
虽然国内众多PHP程序员仍在依靠addslashes防止SQL注入,还是建议大家提高中文防止SQL注入的反省。addslashes的题目在
于黑客
可以用0xbf27来替代单引号,而addslashes只是将0xbf27改动也0xbf5c27,成为一个可行的多字节字符,其中的0xbf5c仍会
被作为是单引号,所以addslashes无法得逞阻止。

   
当然addslashes也未是绝不用处,它是用来单字节字符串的处理,多字节字符或用mysql_real_escape_string吧。

    另外对于php手册中get_magic_quotes_gpc的举例:
    if (!get_magic_quotes_gpc()) {
    $lastname = addslashes($_POST[‘lastname’]);
    } else {
    $lastname = $_POST[‘lastname’];
    }
   
最好对magic_quotes_gpc已经开的情形下,还是对$_POST[’lastname’]进展检查一下。

   
再说下mysql_real_escape_string和mysql_escape_string这2独函数的别:
    mysql_real_escape_string 必须在(PHP 4 >= 4.3.0, PHP
5)的景下才能够应用。否则只能用 mysql_escape_string
,两者的别是:mysql_real_escape_string
考虑到连年的当前字符集,而mysql_escape_string 不考虑。

    总结一下:

    * addslashes() 是野蛮加;
    * mysql_real_escape_string()
会判断字符集,但是针对PHP版本有要求;
    * mysql_escape_string不考虑连接的手上字符集。

   
dz中之防范sql注入就是之所以addslashes这个函数,同时以dthmlspecialchars这个函数中生出进行一些调换$string
= preg_replace(/&((#(d{3,5}|x[a-fA-F0-9]{4}));)/,
&\1,这个替换解决了注入的题材,同时为解决了中文乱码的一部分题目

网站地图xml地图