2012-08-30 62 views
0

如果我在所有的MySQL查詢中使用預處理語句,我是否仍然需要使用mysql_real_escape_string()等來防止SQL注入?PHP/MySQL:準備報表解決方案嗎?

問題:我讓我的代碼運行通過foreach全部$_POST元素和mysql_real_escape_string()在他們每個人上。

卻成了一個問題,當我開始textareas使用CKEditor的,因爲它產生被插入到數據庫中的HTML代碼,而是將其插入它之前,它會突破我前面提到的那個foreach循環,逃避所產生的所有報價CKEditor,使其在HTML頁面中顯示時無法使用。

因此,準備好的語句是否可行?

+0

使用預準備語句時,您不必擔心sql注入。它會自行處理它 – asprin

回答

2

如果您正確使用準備好的語句,則不需要轉義您插入的內容,因爲您將內容與SQL代碼分開。

但它不是一個神奇的方法,只是「使用準備好的方法」。你需要確保你的代碼真正進入參數。你可以(我不是說你正在這樣做,但是可以肯定)只是準備一個你可能會運行的查詢,並且遇到你曾經遇到過的同樣的問題。

如果您還記得準備好的語句不是一個不可思議的「現在它很安全」按鈕,那麼跳過轉義碼就可以了。