addslashes 及 别的 清除空格的诀假若不安全的

免去空格的方法是不安全的,部分缘由是因为字符中的空格非凡多,例如
“addslashes的题材在 于黑客
能够用0xbf2七来替代单引号,而addslashes只是将0xbf二七改动为0xbf5c2柒,成为一个实惠的多字节字符,在那之中的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自带1个职能能够对输入的字符串进行处理,可以在较底层对输入进行安全上的上马处理,也即Magic
Quotes。(php.ini
magic_quotes_gpc)。如果magic_quotes_gpc选项启用,那么输入的字符串中的单引号,双引号和此外1些字符前将会被自动加
上反斜杠。

    但Magic
Quotes并不是四个很通用的消除方案,没能屏蔽全体有潜在惊恐的字符,并且在众多服务器上Magic
Quotes并未被启用。所以,我们还索要动用别的三种艺术来防备SQL注入。

    许
多数据库本人就提供那种输入数据处理效果。例如PHP的MySQL操作函数中有addslashes()、
mysql_real_escape_string()、mysql_escape_string()等函数,可将特殊字符和或者引起数据库操作出错的字
符转义。那么这八个效益函数之间有啥却别呢?上面大家就来详细描述下。

   
就算国内不少PHP程序员仍在凭借addslashes防止SQL注入,依然建议大家坚实中文防止SQL注入的检查。addslashes的标题在
于黑客
能够用0xbf二7来替代单引号,而addslashes只是将0xbf贰柒更换为0xbf五c二七,成为2个卓有功用的多字节字符,在那之中的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那3个函数的区分:
    mysql_real_escape_string 必须在(PHP 四 >= 4.三.0, PHP
五)的意况下才能应用。不然只能用 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}));)/,
&\一,这么些替换消除了注入的题目,同时也化解了粤语乱码的有的难点

相关文章