1
我總是喜歡使用其他消毒方法(和準備的說明),但我在某些情況下,客戶不希望我改變他原始腳本中的單一行(即時只添加插件)mysql查詢+ sprintf =注入?
IM擔心有人可能會通過修改$ POST值利用這一點,他會怪我(如客戶通常做):
extract($_POST, EXTR_PREFIX_ALL, "POST");
$q = sprintf(ARQ, trim($POST_string));
$res = doexec($q);
DEFINE("ARQ", "INSERT INTO library (string) VALUES ('%s')");
我嘗試了幾種組合,但所有我能得到一個錯誤,沒有mysql注入 所以,這是否足夠安全?
不安全。 '%s`不會轉義數據。它只需要一個字符串放在它的位置。您需要查看`PDO` /`mysqli`並在將值放入查詢之前使用準備好的語句或對該值使用`mysql_real_escape_string`。 – 2011-01-27 18:44:14