可能重复:
PDO 准备好的语句是否足以防止 SQL 注入?
我对推出一个我已经工作了几天的新 API 的主要关注是安全性。
我是 PDO 用法的初学者,但知道主要结构。但我不知道如何保护查询免受 SQLInjection 的影响。
我的代码如下:
<?php
$Start = new Db();
class Db
{
private $dbh = null;
public function __construct()
{
$this->dbh = new PDO('mysql:host=localhost;dbname=pdo', 'root', 'xxxxx');
}
public function PDOFetch($Var)
{
$sth = $this->dbh->prepare("$Var");
$sth->execute();
$result = $sth->fetchAll();
return $result;
}
public function PDONumb ($Var)
{
$sth = $this->dbh->prepare("$Var");
$sth->execute();
$count = $sth->rowCount();
return $count;
}
public function PDODel ($Var)
{
$Delete = $this->dbh->exec("$Var");
return $Delete;
}
public function PDOQuery ($Var)
{
$Query = $this->dbh->query("$Var");
return $Query;
}
}
?>
我将如何防止 SQL 注入和其他漏洞?
编辑:
例如,传递到 API 的查询是从“index.php”页面完成的。
一行是:
$Num = $Start->PDONumb("SELECT * FROM news");
但后来,当我用这个掩盖了我的踪迹时。我想更高级地使用它,所以它会传递用户定义的变量(因此是 SQL 注入问题)
但目前,通过的查询是由管理员定义的。