我正在尋找執行嚴格(白名單)驗證/篩選用戶提交的HTML的最佳做法。嚴格的HTML驗證和PHP篩選
主要目的是過濾可能通過網頁表單輸入的XSS和類似的垃圾。次要目的是限制由非技術用戶輸入的HTML內容的破壞,例如通過具有HTML視圖的所見即所得編輯器。我正在考慮使用HTML Purifier,或者通過使用HTML DOM解析器來滾動我自己的過程,如HTML(dirty) - > DOM(dirty) - > filter-> DOM(clean) - > HTML(清潔)。
你能用這些或更簡單的策略來描述成功嗎?任何需要注意的缺陷?
感謝羅斯,這些都是應該被濾除的各種輸入的優秀例子。但我正在尋找的答案將包括方法和解決方案。 – 2008-10-14 14:52:02
第一個示例(它是對編碼錯誤文章的引用:http://www.codinghorror.com/blog/archives/001171.html)並不真正相關,因爲'漏洞'取決於該URL的性質,而是比這個特定的HTML代碼片段的語法要複雜得多。 – 2008-10-14 15:26:38
還有一些有用的規則可應用於第一個規則,例如「僅當src屬性與正則表達式/^http:\/\/localsite.com\/uploaded_images\/[\w-]匹配時才允許標記」 * \(PNG | JPG | GIF)。$ /我」。 – 2008-10-14 16:21:15