2011-12-15 29 views
5

我最近插入PageDown來對來自textarea的一些HTML輸入進行santize,並且我注意到它修剪了「style」元素。爲什麼<style>塊被認爲是不安全的標記?

我只是想知道爲什麼這些被認爲是不安全的?

+0

我也想知道這一點。 Gmail從HTML電子郵件中刪除樣式塊,我認爲這是出於安全原因,但我不知道爲什麼。 – MrMisterMan 2011-12-15 13:21:11

+0

風格元素不應該在HTML體中,只能在頭部。這可能是推理嗎? – 2011-12-15 13:27:40

回答

4

IE有一個特殊的CSS功能,即allows JavaScript to be embedded within CSS。僅憑這一點就足以令人想要禁止<style>標籤。

behavior:表達式也可以進入style屬性,所以你應該確保你無論是從您的whitelist,或白名單中的具體樣式刪除style屬性。你應該不是嘗試黑名單樣式,因爲有幾種方法腳本可以使其進入樣式,並有plans to add more in the future

另外,正如其他人提到的,你可以完全改變使用CSS的頁面外觀。我想不出任何這種方式在沒有允許其他標記(如<form>標籤)的情況下都可能有害,但給予了足夠的創造力,我相信一個惡意的人可以提出一些想法。

0

我的考慮很簡單,因爲您應該防止用戶提交<script>和其他可能操縱您的代碼的標籤,也可能因爲這些標籤的正則表達式而刪除<style>標籤。但不要認爲這是理所當然的。

歸功於:http://www.squarefree.com/securitytips/web-developers.html

事情你應該確保永遠不會在用戶提交的HTML允許的,以 保護參觀者的誰使用這些賬戶Firefox和IE:

javascript:, vbscript:, and data: URLs in links, images, anywhere. 
<script> tags, with or without src attributes. 
Event attributes (on*), which contain scripts. 
-moz-binding: or behavior: CSS properties inside <style> elements or style attributes. 
HTML is that is not "well-formed" -- you can't be sure how quirky browsers will parse it. (Example: <b <i>Foo) 
0

樣式表非常強大。他們可以有效地替換頁面的全部內容(即使瀏覽器沒有完全支持content insertion也可以使用圖片)。不僅如此,還有一些新的瀏覽器在3d變換相關漏洞方面的記錄不佳。 (據我所知,你不能觸發那些惡意製作的CSS,但如果這種情況出現它不會讓我感到驚訝。)

In HTML4 style belongs unequivocally in the headIn HTML5, it can be scoped僅影響元素的子樹,它可能潛在減少基於css攻擊的影響區域,但不會影響它在該區域內可以做的損害。)

0

如果您要去除任何HTML標記,通常情況下,如果您將白名單標籤和屬性(也就是說,包含您允許的內容列表,並刪除其他所有內容),而不是列入黑名單。 HTML可能有點複雜,而且還在不斷髮展。你怎麼知道將來不會有一個<stuff>元素讓支持的瀏覽器運行任意東西?

有了這樣的說法...不像大多數元素,樣式表可以改變它嵌入的整個頁面的外觀。並且不能可靠地限制,而無需訴諸iframe等,或解析CSS和剝離淘汰犯規性質和/或增加特異性。 (HTML5規則不能依賴於IE8--它仍然是最常用的瀏覽器之一,事實上,範圍化的樣式元素似乎還沒有得到很好的支持)。特別是,理論上可以編寫一些CSS,將整個頁面全部轉換爲另一頁面。它甚至可以使本機代碼運行(例如,通過IE中的behavior)。因此,對於將以HTML格式輸出的內容,這不是我通常會允許的。對於管理員後端,也許......但不適用於評論表單。

相關問題