2011-01-09 68 views
0

可能重複:
What does mysql_real_escape_string() do that addslashes() doesn't?SQL注入可以防止只用addslashes(字符串)?

如果沒有,我已經使用函數mysql_escape_string,並將其添加字符如\ r \ n中的話,我不希望出現這種情況..

+3

`mysql_real_escape_string`不會向最終數據添加任何內容。如果發生這種情況,請另外提出一個問題,可能還有其他問題 – 2011-01-09 00:16:36

+2

如果您在使用mysql_real_escape_string()添加內容時遇到問題,請確保Magic Quotes已關閉。 – keithjgrant 2011-01-09 00:21:00

回答

5

不,這不安全。改爲使用mysql_real_escape_string()。它不應該添加任何東西來超越它所需的字符串。

http://php.net/mysql-real-escape-string

這也適用於其他數據庫太:使用特定的擴展逃逸功能。

3

不,addslashes不夠好。 mysql_escape_string不一定夠好。使用mysql_real_escape_string

無論你喜歡它添加與否都無關緊要,它只會轉義字符以確保查詢語法的有效性。如果這阻礙了你正在做的事情,那麼你做錯了什麼。

2

您也可以選擇使用mysqli函數和Prepared Statements。這在很大程度上避免了這個問題,因爲所有引號都被認爲是數據的一部分。

3

防止SQL注入的最佳方法是使用準備語句與mysqliPDO