2011-01-05 69 views
3

我得到了一個網站,解決最近使用SQL注入攻擊的問題。從我可以收集的Havij自動SQL注入器被用來插入代碼到URL的查詢字符串參數中。SQL注入篩選器URL查詢字符串 - PHP

該網站是一個自定義的CMS內置和有點過時。我認爲不可能完全重建。

防止這種情況再次發生的最好方法是什麼?我是一名PHP開發人員,但通常只是在表單上進行驗證,或者使用已經內置此功能的系統 - wordpress,codeigniter,drupal等。

任何想法或想法都會被讚賞。

感謝

回答

3

只有一個簡單的規則:變量(不要緊,它是從哪裏來的 - 從用戶或者是從數據庫中已經得到的東西)正被放入SQL查詢應之前用mysql_real_escape_string()進行消毒。

或者你可以使用準備好的查詢(準備好的語句/佔位符),沒關係。

+0

完美,謝謝! – Robimp 2011-01-05 13:38:07

+0

那麼,任何引用的變量(字符串)。不要在整數和浮點數上運行MRES,只需將它們添加到查詢中即可:'AND AND id ='。 (int)$ id' – ircmaxell 2011-01-05 13:41:57

+0

@ircmaxell:確實,只是不想讓OP的事情變得複雜。 – zerkms 2011-01-05 13:48:15

2

您可能無法更改所有代碼,但也許可以更改數據庫代碼。如果是這樣,請嘗試使用PDO並準備好語句。我推薦pdo,因爲您沒有指定數據庫類型。如果您使用的是mysql,我認爲mysqli也提供了準備好的語句。

+0

是的,我只是在變量到達數據庫之前對變量使用了mysql_real_escape_string()函數。不如我想象的那麼快樂/工作。感謝你的回答。 – Robimp 2011-01-05 14:05:03

+0

@Robimp沒問題,很高興我可以幫忙。 – AntonioCS 2011-01-05 15:15:37