2009-10-22 42 views
1

如何使電子郵件安全地使用HTML顯示在使用python的Web瀏覽器中?如何使用python使web瀏覽器的HTML安全?

顯示時不應遵循任何外部參考。換句話說,所有顯示的內容應該來自電子郵件,而不是來自互聯網。

除了垃圾郵件之外,應儘可能按照作者的意圖儘可能地顯示。

我想避免自己編碼。

需要最新瀏覽器(firefox)版本的解決方案也是可以接受的。

+1

你可能想明確說明你的意思是「安全」。它看起來像你不想讓鏈接,但我認爲你也意味着你想從XSS等安全。 – 2009-10-22 10:03:29

+0

你期望從基於Web的電子郵件閱讀器?我對更多和更不安全的解決方案感興趣。 – iny 2009-10-22 10:05:39

回答

1

html5lib包含HTML + CSS消毒劑。它目前允許太多,但修改它以匹配用例不應太難。

here找到它。

0

使用HTMLparser模塊或安裝BeautifulSoup,並使用它們來解析HTML並禁用或刪除標記。這會留下任何鏈接文本,但它不會被突出顯示,也不會被點擊,因爲您正在使用Web瀏覽器組件進行顯示。

您可以通過將<A></A>替換爲<SPAN></SPAN>並更改文字修飾以顯示鏈接過去的位置來更清楚地完成所做的操作。也許是一種不同於正常情況的藍色陰影,並且一個虛線的下劃線表示破碎。這樣你就可以更接近地按照意圖展示它,而不會誤導人們點擊不可點擊的內容。您甚至可以在Javascriptpure CSS中添加懸停,該懸浮彈出一個工具提示,解釋由於安全原因鏈接已被禁用。

類似的事情可以用<IMG></IMG>標籤完成,包括用空白的矩形替換它們以確保頁面佈局接近原始。

我已經用Beautiful Soup做過這樣的東西,但是HTMLparser包含在Python中。在較老的Python distribs中,有一個htmllib現在已經被棄用了。由於電子郵件中的HTML可能不完全正確,因此請使用Beautiful Soup 3.0.7a,它更好地理解損壞的HTML。

+0

可點擊的鏈接不是問題。圖像和其他引用通常自動獲取。 – iny 2009-10-22 10:27:56

+0

一個合適的HTML解析器確實是一個好的開始。但請務必使用可接受標籤和可接受屬性的白名單,並刪除其他所有內容。黑名單方法可能很容易解決:還有更多潛在的危險/外部內容(包括標籤)超出了您的想象,特別是在跨瀏覽器差異的情況下。此外,如果您需要允許使用樣式,則可以在您之前完成困難的CSS解析任務,以僅允許已知好的屬性。 – bobince 2009-10-22 11:17:12

+1

這就是爲什麼我更喜歡現有的解決方案,而不是自己做。 – iny 2009-10-22 17:04:01

1

我對「安全」的含義並不十分清楚。這是一個很大的話題...但是,它的價值:

在我看來,ActiveState Cookbook的stripping parser是最簡單的解決方案之一。你幾乎可以複製/粘貼課程並開始使用它。

看看評論以及。最後一個說它不再工作,但我也有這個在某個應用程序中運行,它工作正常。從工作中,我無法使用那個盒子,所以我必須在週末查看它。

+0

只要確認該腳本確實不會再留下有效標籤,正如該評論者在該頁面上所述。 – ropable 2010-05-19 02:41:06