可能重复:
在 PHP 中防止 SQL 注入的最佳方法?
我的代码问题很抱歉。
$yeri=无过滤器;
mysql_query("Insert Into deney (vid,yazan,email,yorum,ip,tarih,durum,yeri) values ('$id', '$yazan', '$email', '$yorum', '$ip', Now(),'1','$yeri')");
如何将攻击站点的数据更新到此查询?我如何获得这种预防措施。如何更新我表中的数据
可能重复:
在 PHP 中防止 SQL 注入的最佳方法?
我的代码问题很抱歉。
$yeri=无过滤器;
mysql_query("Insert Into deney (vid,yazan,email,yorum,ip,tarih,durum,yeri) values ('$id', '$yazan', '$email', '$yorum', '$ip', Now(),'1','$yeri')");
如何将攻击站点的数据更新到此查询?我如何获得这种预防措施。如何更新我表中的数据
请改用 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,但不推荐,您需要这样做
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) . "')");
如果您必须使用旧的 mysql 扩展或使用mysqli 扩展的预处理语句,您应该使用mysql_real_escape_string转义所有输入。
请注意,这些mysql_
功能已被弃用,如果可能,您不应该使用它们(并且应该在您的情况下)。