SO 上有很多关于 SQL 注入的警告,但我发现没有人不这样做really回答,这是怎么发生的?在这个问题中,我假设它是 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);
无权访问数据库的恶意用户如何注入恶意数据,如果甚至不支持多个查询?
或者他们是吗?
如果甚至不支持多个查询,无法访问数据库的恶意用户如何注入恶意数据?
“SQL注入”不等于“第二次查询”。
或者他们是吗?
当然是。
第二个查询只是一个example。虽然它可以是任何有效的 SQL 语句。 SQL 注入是对格式不正确的查询的利用。如果开发人员没有正确格式化 SQL,则有可能突破文字限制并向 SQL 主体添加代码。
通过添加第二个查询真的可以实现 SQL 注入吗?
是的,取决于您使用的 API。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)