SO上有很多关于SQL注入的警告,但我发现没有人没有真正回答,这是怎么发生的?在这个问题中,我假设它是 MySQL 和 PHP。
基本的mysql_不接受查询中的第二个查询,对吗?
所以,基本上,这个
$unsafe = "');DROP TABLE table;--";
mysqli_query($con,"INSERT INTO table (Column) VALUES ('$unsafe'");
实际上没有做任何有害的事情吗?纠正我这一点。
我没有使用mysqli_的经验,所以我会跳到 PDO 和“准备好的语句”。
当我开始使用 PDO 时,我缺乏关于它的信息,并且基本上是这样使用它,认为它是安全的。
$stm = $pdo->prepare("INSERT INTO table (Column) VALUES ('$unsafe');
$stm->execute();
但是,PDO 与mysql_ 相同。它不支持开箱即用的多个查询,对吗?再次,纠正我这一点。
那么,这被认为是安全的,如果我没记错的话?
$stm = $pdo->prepare("INSERT INTO table (Column) VALUES (?);
$stm->execute(array($unsafe);
如果甚至不支持多个查询,无权访问数据库的恶意用户如何注入恶意数据?
还是他们?