對於一個項目,我想使用feedparser。基本上,我得到它的工作。強制feedparser對所有內容類型進行消毒
在文檔section about sanitization中描述了並非所有內容類型都已過濾。如何強制feedparser在所有內容類型上執行此操作?
對於一個項目,我想使用feedparser。基本上,我得到它的工作。強制feedparser對所有內容類型進行消毒
在文檔section about sanitization中描述了並非所有內容類型都已過濾。如何強制feedparser在所有內容類型上執行此操作?
我想你提到的feedparser文檔頁面給出了很好的建議:
*建議您檢查例如內容類型項[I] .summary_detail.type。如果爲text/plain然後它沒有被消毒(你應該執行HTML渲染內容之前逃逸)。*
import cgi
import feedparser
d = feedparser.parse('http://rss.slashdot.org/Slashdot/slashdot')
# iterate through entries. If the type is not text/html, HTML clean it
for entry in d.entries:
if entry.summary_detail.type != 'text/html':
print cgi.escape(entry.summary)
else:
print entry.summary
當然,也有幾十個,你可以通過條目根據迭代方法是什麼一旦他們乾乾淨淨,你就想和他們一起做。
爲了更好地保存,我查看了feedparser代碼。看來,只有文本/ HTML真的被消毒,所以我測試如果類型不是文本/ HTML,然後自己消毒。但除了細節,你的答案是完全正確的。 – Martin 2012-02-24 08:43:21
您確定要嗎? Feedparser對其允許的內容非常嚴格。它列入白名單而不是黑名單,以確保只有安全的東西被允許。你擔心會得到什麼? – fitzgeraldsteele 2012-02-20 04:57:53
文檔說,內容類型'text/plain'沒有被消毒,所以如果我想要安全的內容,我必須自己做。但是,如果feedparser可以做到這一點,那將會很不錯。 – Martin 2012-02-20 11:06:29