防止数据库攻击

时间:2012-10-05 17:53:17

标签: php database arrays

使用get_magic_quotes_gpc来防止数据库攻击仍然有用吗?如果启用了魔术引号,我想剥去额外的斜线。

if(get_magic_quotes_gpc()){
    If magic quotes is enabled, strip the extra slashes
    array_walk_recursive($_GET,create_function('&$v,$k','$v = stripslashes($v);'));
    array_walk_recursive($_POST,create_function('&$v,$k','$v = stripslashes($v);'));
}

我查看了php手册,发现它已被弃用。我不确定我可以使用哪些替代方案,或者是否可能有一个我不知道的调整。因为我还是编程和学习不同编码技术的新手。任何提示将不胜感激

1 个答案:

答案 0 :(得分:1)

使用此

function mysql_prep($value)
{
    $magic_quotes_active = get_magic_quotes_gpc();
    $new_enough_php = function_exists("mysql_real_escape_string");
    if ($new_enough_php) { 
        // undo any magic quote effects so mysql_real_escape_string can do the work
        if ($magic_quotes_active) {
            $value = stripslashes($value);
        }
        $value = mysql_real_escape_string($value);
    } else { 
        // if magic quotes aren't already on then add slashes manually
        if (!$magic_quotes_active) {
            $value = addslashes($value);
        }
        // if magic quotes are active, then the slashes already exist
    }
    return ($value);
}

我建议你pdo prepared statement

$q=$pdo->prepare("query where id=:id");
$q->execute(array(":id"=>1))