不,白名單是hardcoded,無法調整。但是,class
屬性位於白名單中,應保留,您可能意思是style
屬性?如果您需要自定義行爲,您將不得不使用不同的解決方案(如DOMParser,它可以解析Firefox 12中的HTML文檔)。
至於較早的Firefox版本,您可以在那裏使用DOMParser
解析XHTML數據。如果您確實擁有HTML,那麼我只知道一種解析方法,而不立即將其插入到文檔中(這可能會導致各種安全問題):range.createContextualFragment()。你需要一個HTML文檔,如果你沒有 - 一個隱藏的加載about:blank
也可以。這是它是如何工作的:
// Get the HTML document
var doc = document.getElementById("dummyFrame").contentDocument;
// Parse data
var fragment = doc.createRange().createContextualFragment(htmlData);
// Sanitize it
sanitizeData(fragment);
這裏清理數據是您自己的責任。您可能希望將您的清理工作放在我上面鏈接的Mozilla白名單上 - 刪除不在該列表中的所有標記和屬性,並確保檢查鏈接。 style
屬性是一個特殊情況:它曾經是不安全的,但恕我直言不再給予,不再支持-moz-binding
。
謝謝你的回答。我會用'class'重新檢查(我認爲它已被刪除,但現在不確定)......無論如何,是的,'style'也很重要。 FF12不是一個選項,因爲我需要支持FF4 +。 – gakhov 2012-04-17 22:25:10
@gakhov:我更新了我的答案。 – 2012-04-18 05:51:03
好吧,現在我明白了。那麼如果我從我信任的源(我的服務器生成該html)獲取HTML並將其放入帶有'innerHTML'的DOM中,那麼怎麼辦?它是否違反了擴展中的安全性(我的意思是,如果它與編寫自定義清理程序相同的安全級別,或Mozilla需要確定,並且他們需要查看我如何清理數據)? – gakhov 2012-04-18 09:23:09