脚本使用PHP,而DB使用MySQL。这是脚本本身。此查询从sql注入安全吗?
$unsafe_variable = $_GET["user-input"];
$sql=sprintf("INSERT INTO table (column) VALUES('%s')",$unsafe_variable);
mysql_query($sql);
有人说,如果用户分配;DROP TABLE blah;
字符串变量$ unsafe_variable它删除表。
但我试过了这个例子,
http://localhost/test.php?user-input=DROP%20TABLE%20my_table
但它并没有删除表,而是在表中插入新行(;DROP TABLE blah;)
。
有人可以解释我怎么可能用sql注入攻击这个脚本?
'mysqli'或'PDO'他们准备的语句会是一个更好的选择。 – Powerlord 2010-06-14 19:29:33
非常感谢所有参与者的问题。我真的意识到,只有'sprintf',我们不能确定我们的查询是否来自** sql注入**。对于这个特定的例子,我和参与者都不能介绍如何执行sql注入。但是我发现了一个很好的sql例子,即使我们使用'sprintf',我们也可以执行sql-injection。这个sql示例可以在这里找到(http://php.net/manual/en/function.mysql-real-escape-string.php“PHP在线手册”)。请参阅'Example#2的一部分示例SQL注入攻击' – Bakhtiyor 2010-06-15 09:41:59