2010-01-18 194 views
5

我正在尋找一個簡單的PHP庫,可以幫助篩選PHP Markdown輸出中的XSS漏洞。 I.E. PHP降價將解析的東西,如:PHP Markdown XSS消毒器

[XSS Vulnerability](javascript:alert('xss')) 

我一直在各地做一些閱讀和我關於這個問題找到了最好的位置是this問題。

雖然HTML淨化器看起來像最好的(幾乎只有)的解決方案,我想知道是否有什麼更有一般? HTML Purifier似乎有點強大,特別是對於我的需求,以及配置的痛苦,儘管它看起來像這樣做後會很好。

還有其他什麼可能有點不穩健和可配置,但仍然做得很好嗎?或者我應該深入挖掘並開始嘗試爲我的需求配置HTML Purifier?

編輯澄清:我不想偷工減料或類似的東西。 HTML淨化器只是提供了很多細粒度的控制,而對於一個簡單的小項目來說,只需要簡單的控制就不需要了,儘管不使用任何東西也不是一種選擇。這是我從什麼時候來的時候要求什麼東西更簡單不太健壯

而且最後一點,我不尋求建議使用等htmlspecialchars()strip_tags()或任何東西。我已經通過類似的方式消除了PHP Markdown Extra中的嵌入式HTML。我正在尋找方法來防止PHP Markdown OUTPUT中的XSS漏洞。

謝謝。

回答

6

我從來沒有聽說過HTML Purifier之類的其他工具,爲此,HTML Purifier的確有很好的聲譽。

也許這是「有點強大」和「痛苦配置」,是的;但它也可能是PHP中最常用和經過測試的解決方案;而這些是你必須選擇這樣一個重要組件時的重要標準。

即使這意味着投資半天才能正確配置,如果我處於您的情況,我可能會選擇HTML淨化器。

+0

是的,我想我對它的評論就好像我不太關心它,這是不正確的。我只是希望能有更多一般的東西。 HTML Purifier爲您提供了對其自身各個方面的精細控制,而這些對我當前的項目並不需要。儘管不使用任何東西或極其基本的東西也不是一種選擇。你懂? – anomareh 2010-01-19 00:49:05

3

沒有太強大的東西。 「消毒」HTML是。你削減任何角落更簡單地處理它可能導致潛入偷襲。即使是擁有同類最佳聲譽的複雜的舊HTMLPurifier,在過去也有多種潛入危險標記的方法!

但是,如果您的文本標記解決方案能夠輸出危險的HTML,那麼它是有缺陷的,應該被IMO取代。如果PHP Markdown允許通過javascript:網址,那麼這是一個非常可悲的基本缺陷,我不認爲我相信它能讓其他任何東西都變得正確。

+0

我的問題與HTML淨化器是它給你一個巨大的細粒度控制它的每一個方面的自我。我不打算偷工減料,只是在配置方面稍微簡單一點,因爲我正在處理的一個小項目中,我不需要那麼細緻的控制。儘管沒有使用也不是一種選擇。 就PHP Markdown進入AFAIK而言,它是我知道的Markdown的唯一PHP實現,它的目的是將Markdown分析爲有效的HTML。該鏈接是有效的HTML,但它可能有害。它不會以安全或安全爲目標做廣告。 – anomareh 2010-01-19 00:53:04

0

HTMLPurifier是一個很好的答案,也許是最強大的解決方案。

也可以以相對安全的方式使用Markdown,但您必須以正確的方式使用它。有關如何安全使用Markdown的詳細信息,請參見here。有關如何安全使用它的詳細信息,請參閱鏈接,但簡短版本爲:使用最新版本設置safe_mode並設置enable_attributes=False非常重要。

1

我有一個建議,我asked on SO to find out if it would work,但不幸的是,它被關閉和標記爲與這個問題重複。

我的建議是修改降價的代碼,並只允許鏈接和圖片的來源入手http://https://ftp://涵蓋了所有需要的通用協議。如果鏈接沒有以其中一個開始,那麼它應該在輸出中保持不變。