注意:我照顧SQL注入和輸出轉義其他地方 - 這個問題只關於輸入過濾,謝謝。用戶輸入過濾 - 我需要過濾HTML嗎?
我正在重構我的用戶輸入過濾函數。在GET/POST參數傳遞到特定類型的過濾器filter_var()之前,我做了以下內容:
- 檢查參數編碼與mb_detect_encoding()
- 轉換爲UTF-8 iconv()(以//無視),如果它是不是ASCII或UTF-8
- 乾淨的白色空間與a function found on GnuCitizen.org
- 結果傳遞直通strip_tags() - 沒有允許在所有標籤,降價只是
現在的問題:將參數傳遞給像htmLawed或HTML Purifier這樣的過濾器還是有意義的,還是我可以將輸入視爲安全的?在我看來,這兩個主要不同在於允許的HTML元素和屬性的粒度(我不感興趣,因爲我刪除了所有內容),但htmLawed文檔有一段關於'dangerous characters'的部分,這表明可能有一個原因使用它。在這種情況下,它會是一個理智的配置?
危險字符可能是UTF-8控制字符。 – Jacco 2010-02-21 13:14:46
有關如何擺脫它們的任何建議? – djn 2010-02-21 15:40:55
我並沒有真正瞭解你的注意事項,SQL注入是關於防止SQL查詢中令人討厭的用戶輸入。事實上,大多數的漏洞都是由於討厭的INPUT,而不是輸出。這些被稱爲「污點和水槽」漏洞。 – rook 2010-02-21 23:59:30