get_magic_quotes_gpc 是做什么的,为何php5.4以上被移除了?

本函数功能:

get_magic_quotes_gpc — 获取当前 magic_quotes_gpc 的配置选项设置,这个是magic_quotes_gpc在php.ini里面的配置选项,在运行时设置将不会成功。

如果设置了这个选项,那么php解析器就会自动为POST、GET、COOKIE过来的数据增加转义字符"\"。

为什么要有这个选项?

增加转义符最主要的目的就是为了防止包含sql注入之内的数据注入攻击。

在实践中,一般如下处理:


if (!get_magic_quotes_gpc())
{
    if (!empty($_GET))
    {
        $_GET  = addslashes_deep($_GET);
    }
    if (!empty($_POST))
    {
        $_POST = addslashes_deep($_POST);
    }

    $_COOKIE   = addslashes_deep($_COOKIE);
    $_REQUEST  = addslashes_deep($_REQUEST);
}


在php5.4的更高版本中,这个选项被去掉了,也即是php解析器不会自动为POST、GET、COOKIE过来的数据增加转义字符"\",而是把安全编码交给了用户自己,从而避免了magic_quotes_gpc未设置,用户依赖这个设置而带来了安全隐患。

这就需要我们在进行sql语句执行前,必须转义任何变量:

$value mysql_real_escape_string($value);



参考:

http://cn2.php.net/get_magic_quotes_gpc

http://cn2.php.net/manual/zh/security.magicquotes.php


你可能感兴趣的:(php,mysql)