2014-03-30 53 views
1

我使用lxml.html.clean來清理html。它似乎從所有標籤中刪除'樣式'屬性,爲了我的目的,我需要樣式屬性不被刪除。lxml.htm.clean從標籤中刪除'樣式'的目的

在我開始允許之前,我非常想知道在清理html時不刪除樣式屬性是否存在任何安全隱患。

任何有關這件事從大師的洞察力將在那裏高度讚賞。 (請注意我的應用程序允許最終用戶創建保存在後端數據庫中的html,然後在頁面上呈現。上面的'clean'在從html中移除任何惡意html(例如,javascript等)它被保存用於隨後的渲染)。

feedparser HTML sanitisation web site - 「風格」是不存在的「safe_attrs」

(另外,對不起,如果這是一行人的問題,我是新來的HTML /消毒和相關的安全問題。)

+0

在我看來,這只是[一個選項,你可以關閉](http://lxml.de/api/lxml.html.clean.Cleaner-class.html),或者不是你正在使用? –

+0

謝謝兩位!似乎有些東西被關閉,但是,我只是想知道爲什麼默認'樣式'屬性被刪除 - 是否存在惡意代碼使用此屬性的安全問題? (我會加強這個問題來澄清) – user1055761

+0

也許別人會對此表示讚賞。對我來說,呃。兩位(咕嘟咕嘟),我會說它本身可能不是_security_(你可以用HTML屬性做多少事情?),因爲它是很多不必要的東西的來源。許多JavaScript庫,瀏覽器擴展和其他東西都可以添加到此屬性中。 –

回答

1
列表

在正常情況下,款式本身不是安全風險。不過,也有幾種情況,其中惡意的風格可能是一個責任:與style="display:none"

  • forminput元素可以在某些瀏覽器數據自動填充,使用戶在不知不覺中提交額外的數據。
  • style="display:block"或其他display風格可能會打破期望inline或其他風格的佈局。
  • 如果您的佈局引擎想要保持特定的視覺風格,允許style屬性中的樣式信息將爲作者/海報提供比縮進選擇樣式更多的緯度。 (如果他們決定他們想要2000pt字體呢?)
  • 樣式屬性有時可以通過@import機制加載其他樣式,或者導致通過background和類似屬性加載URL。除非衛生洗滌劑承諾也清理CSS代碼,否則這將成爲注射的潛在載體。

由於您希望sanatize的唯一原因是源可能不受信任或不安全,因此假定讓源設置自己的樣式不是理想的。

+0

好的,有道理。對於我來說,格式化細微差別不是問題,但'@'機制是我需要閱讀和理解的東西,如何定製清除CSS的清單,同時允許'樣式'屬性。謝謝 ! – user1055761