這個MySQL語句在PHP中內置的安全性如何?它會受到SQL注入的影響嗎?PHP腳本中這個MySQL語句的安全性如何?
$sql = sprintf("INSERT IGNORE INTO my_table VALUES(%d, %d, 1, NOW())",
mysql_escape_string($_SESSION['client']['id']),
mysql_escape_string($_POST['id']));
這個MySQL語句在PHP中內置的安全性如何?它會受到SQL注入的影響嗎?PHP腳本中這個MySQL語句的安全性如何?
$sql = sprintf("INSERT IGNORE INTO my_table VALUES(%d, %d, 1, NOW())",
mysql_escape_string($_SESSION['client']['id']),
mysql_escape_string($_POST['id']));
是的,因爲%d只會導致一個數字,不需要轉義字符串。使用單引號也可以提高速度。所以一個安全快捷的方法是:
$sql = sprintf('INSERT IGNORE INTO my_table VALUES(%d, %d, 1, NOW())', $_SESSION['client']['id'], $_POST['id']);
不,它不應該是脆弱的。
這是一篇關於如何保護您的SQL查詢的詳細文章PHP。
http://www.tech-evangelist.com/2007/11/05/preventing-sql-injection-attack/
這對我來說很好。
事實上,在這種情況下是否有任何需要使用mysql_escape_string,因爲sprintf(「%d」)只能導致一個數字?
得到任何最新的基準你的索賠單引號提高在這種情況下的速度? – Salaryman 2009-07-29 16:07:02