腳本使用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