2011-03-11 23 views
2

當我應該使用mysql_real_escape_string?當使用mysql_real_escape_string?

難道只有當我將行插入數據庫?或者只有當我有用戶輸入?

感謝

+1

一個很好的資源已經在這裏對SQL注入http://stackoverflow.com/questions/60174/best-way-to-stop-sql-injection-in-php – DeaconDesperado 2011-03-11 20:40:04

回答

1

應使用mysql_real_escape_string()當你正在構建,將針對數據庫運行的查詢。任何用於構建數據庫查詢的用戶輸入都應通過此函數運行。這將防止SQL注入攻擊。

用戶輸入是你關心的大面積,當談到這一點。

2

當你插入一個字符串的值轉換成SQL語句,你所使用的MySQL API您應該使用mysql_real_escape_string。

$sql = "SELECT * FROM student WHERE foo = '" . $foo . "'"; 

應該是:

$sql = "SELECT * FROM student WHERE foo = '" . 
     mysql_real_escape_string($foo) . "'"; 

但是你也應該考慮使用PDO預處理語句和綁定參數,而不是mysql_real_escape_string。這減少了錯誤的風險。

相關問題