2012-02-18 10 views
1

プロジェクトの場合、feedparserを使用します。基本的に私はそれを働かせました。フィードのパーサーがすべてのコンテンツタイプでサニタイズするようにする

ドキュメントsection about sanitizationが記載されていますが、すべてのコンテンツタイプがサニタイズされているわけではありません。フィードパーサーにすべてのコンテンツタイプでこれを強制するにはどうすればよいですか?

私はあなたが参照さfeedparserドキュメントのページには、良いアドバイスを与えると思います
+0

本当にしたいですか? Feedparserは、それが許す範囲でかなり厳格です。ブラックリストではなくホワイトリストで、安全なものだけが許可されていることを確認します。あなたは何を得ることが心配ですか? – fitzgeraldsteele

+0

ドキュメントには、コンテンツタイプ 'text/plain'はサニタイズされていないので、安全なコンテンツを作成するには私自身でそれを行う必要があると言います。しかし、もしfeedparserがこれを行うことができればいいと思います。 – Martin

答えて

1

*あなたが、例えば、コンテンツの種類を確認することをお勧めしますentries [i] .summary_detail.type。それはそれはサニタイズされていません(とあなたがコンテンツをレンダリングする前にエスケープHTMLを実行する必要があります)text/plainである場合。もちろん*

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 

、あなたは何に応じて、エントリを反復処理できる方法の数十があります一度彼らがきれいになったら、彼らと一緒にやりたい。

+0

これをもっと節約するために、私はフィードパーサーコードを調べました。 text/htmlだけが本当に消毒されているようですので、typeがtext/htmlではないかどうかをテストし、自分でサニタイズします。その詳細を除いて、あなたの答えはまったく正しいです。 – Martin

関連する問題