php mysql插入sql sql注入

时间:2012-10-08 19:01:05

标签: php mysql sql sql-injection

  

可能重复:
  Best way to prevent SQL injection in PHP?

我的代码问题sory。

$ yeri = no filtre;

mysql_query("Insert Into deney (vid,yazan,email,yorum,ip,tarih,durum,yeri) values ('$id', '$yazan', '$email', '$yorum', '$ip', Now(),'1','$yeri')");

如何将攻击网站上的数据更新为此查询? 我该如何做到这一预防措施。如何更新表格中的数据

2 个答案:

答案 0 :(得分:2)

改用mysqli或PDO。

在pdo中你的代码看起来像 - 这是 SAFE

$query = $pdo->prepare("Insert Into
    deney (vid,yazan,email,yorum,ip,tarih,durum,yeri)
    values (:id, :yazan, :email, :yorum, :ip, Now(), 1, :yeri)");
$query->execute(array(
    'id' => $id,
    'yazan' => $yazan,
    'email' => $email,
    'yorum' => $yorum,
    'ip' => $ip,
    'yeri' => $yeri
));

这样PDO就可以为你进行转义,并且可以安全地防止sql注入。

要通过PDO创建mysql连接,请使用:

$pdo = new PDO("mysql:dbname=$dbname", $username, $password);

我通常也会添加第4个参数,因为我喜欢在utf-8中编写所有代码,第4个参数在我的情况array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8")中。

只是为了澄清以下是不安全 - 不要使用

$pdo->prepare("Insert Into
        deney (vid,yazan,email,yorum,ip,tarih,durum,yeri)
        values ('$id', '$yazan', '$email', '$yorum', '$ip', Now(), 1, '$yeri')");

如果你坚持使用mysql_query,但是 NOT RECOMMENDED ,你需要这样做

mysql_query("Insert Into deney (vid,yazan,email,yorum,ip,tarih,durum,yeri) values ('"
    . mysql_real_escape_string($id) . "', '"
    . mysql_real_escape_string($yazan) . "', '"
    . mysql_real_escape_string($email) . "', '"
    . mysql_real_escape_string($yorum) . "', '"
    . mysql_real_escape_string($ip) . "', Now(),'1','"
    . mysql_real_escape_string($yeri) . "')");

答案 1 :(得分:0)

如果必须使用旧的mysql扩展名或使用mysql_real_escape_string,则应使用mysqli extension's prepared statements转义所有输入。

请注意,mysql_函数已弃用,如果可能,您不应该使用它们(并且应该在您的情况下)。