2011-06-03 100 views
4

我的HTML淨化器設置現在只允許這些標籤修改htmlpurifier允許標籤此標記

$configuration->set('HTML.Allowed', 'p,ul,ol,li'); 

我想允許列表的縮進和我的編輯器使用這個網站

<ul style="margin-left: 40px;"> 

我應該如何改變我的HTMLPurifier允許標記?我想添加style,但我認爲最好指定允許使用哪種樣式,在這種情況下應該是margin-left。什麼是正確的方式來改變HTML.Allowed這種情況下?

回答

17

允許使用樣式屬性,然後使用%CSS.AllowedProperties修改允許的CSS屬性。

$configuration->set('HTML.Allowed', 'p,ul[style],ol,li'); 
$configuration->set('CSS.AllowedProperties', 'margin-left');

P.S.我很驚訝有多少人不明白HTML淨化器的工作原理。

+2

你到那裏的好庫。感謝使其:) – sameold 2011-06-04 17:39:06

+0

你應該允許白名單的特性,看到一些JavaScript的注射入style屬性這裏的possiblities的:https://www.owasp.org/index.php/XSS_Filter_Evasion_Cheat_Sheet#STYLE_tag_.28Older_versions_of_Netscape_only.29 – marcovtwout 2013-04-25 08:32:01

+5

@愛德華Z.楊,圖書館是非常好的,但文檔我發現一個小expeditive,我會欣賞更多的例子。舉例來說,通過閱讀這http://htmlpurifier.org/live/configdoc/plain.html#CSS.AllowedProperties,我認爲這是很難猜測如何使用它。 SO中的兩行貢獻在該頁面中可能更合適? – ling 2015-09-27 18:05:36

1

至少,你要允許其淨化器的支持,像這樣的標籤屬性:

$configuration->set('HTML.Allowed', 'p,ul[style],ol,li'); 

我不知道你是否也可以允許/限制屬性的內容,雖然。

+0

但是'ul'style]''''我的意思是''ul' style''可能是惡意用戶在那裏添加他的代碼,或者'ul [style]'是廣泛同意足夠的 – sameold 2011-06-03 17:37:27

1

我建議你根本不允許屬性。允許style屬性導致IE7中的XSS漏洞(可能還有其他版本,目前我不確定),但問題是,這太危險了。你應該自己解析HTML,並用代碼中的常量字符串替換用戶。允許HTML是一種非常危險的做法。爲了更好的安全性,您可能想要嘗試諸如降價或創建自己非常簡單的標記類型語言(如BBcode)以供用戶使用。

+1

Htmlpurifier防止XSS的風格屬性。 – 2011-06-03 17:23:06

+1

@Frank Farmer,我認爲他提出了一個有效的觀點。另請參閱「Obsidian_ comment」,目前還不清楚HTMLPurifier是否處理了樣式中的內容,因此他們可能有一個問題,我希望有人會澄清一下,如果他們知道任何測試結果。 – sameold 2011-06-03 18:12:00

+3

@samold:請參閱Edward對黑曜石的回覆Edward是HTML淨化器的作者。「HTML過濾分解HTML的所有組件,包括所有的CSS」 – 2011-06-03 21:50:46

1

就像SamT所說的關於IE7中的XSS漏洞一樣,由於Microsoft移動允許通過「expression()」(也稱爲Dynamic屬性)。 http://msdn.microsoft.com/en-us/library/ms537634(v=vs.85).aspx

關於它在IE8,其中微軟公然承認,它暴露用戶的其他漏洞去除: http://blogs.msdn.com/b/ie/archive/2008/10/16/ending-expressions.aspx

例如:

<a href="" style="width: expression(alert('XSS'));">blah</a> 

上面會彈出一個JavaScript警告框MSIE根據MSDN上的文檔,當Quirks模式處於活動狀態時,它也應該在IE8上工作。 它也可能發生在IE9怪癖模式,但我不能確定。

如果可能,請避免允許訪問style屬性。你永遠不知道什麼時候另一個未來的瀏覽器會得到天才的想法來補充微軟犯的同樣的錯誤。

+3

HTML過濾分解HTML的所有組件,包括所有的CSS。你可以看到它是如何在這裏把CSS:http://htmlpurifier.org/live/smoketests/printDefinition.php(向下滾動到下) – 2011-06-03 18:22:50

+0

當時沒有意識到;我從來沒有使用HTML淨化器多爲自己看來,當我的代碼,並允許HTML中使用,似乎每十五歲那就是在那裏突然認爲它是開放的季節,開始探查XSS漏洞。一個陰戶的出現似乎讓他們陷入瘋狂的瘋狂......真的是一種絕對的煩惱。 :\ – damianb 2011-06-03 18:37:42