我已經閱讀過各種文章,建議在SQL查詢中使用Prepared statements
,但由於mysql_ lib does not allow executing 2 queries in one statement
值得使用它們,因爲如果我只需要在頁面執行時觸發一次查詢,它的一些案件的mysql_query也似乎忽略無效後的數據(如'ADMIN' OR 1--
)爲什麼在SQL查詢中使用Prepard Statements/mysql_real_escape_string
$username = $_POST['username'];
$password = $_POST['password'];
mysql_query("SELECT * FROM users WHERE username=$username AND password=$password");
//processing
現在,如果有人通過「用戶名」爲
'ADMIN' OR 1--
上述查詢dosent取「管理員」行!這是mysql_query的一項功能,它在'1'/Special chars
之後忽略註釋。 SQL注入會發生怎樣在這種情況下,運行MySQL 5.5和PHP 5.3
該查詢將簡單地打破未加引號的字符串(在這種情況下爲'password')。 – jeroen
http://ferruh.mavituna.com/sql-injection-cheatsheet-oku/ – Quentin