Pythonを使用してWebブラウザでHTMLを安全にするにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/1606201

質問

Pythonを使用してWebブラウザで表示するために、電子メールからHTMLを安全に作成するにはどうすればよいですか?

外部参照は、表示されたときに従うべきではありません。言い換えれば、表示されるコンテンツはすべて電子メールからのものであり、インターネットからのものではないはずです。

スパムメール以外は、作者が意図したようにできるだけ近くに表示する必要があります。

これを自分でコーディングすることは避けたい。

最新のブラウザ(firefox)バージョンを必要とするソリューションも受け入れられます。

役に立ちましたか?

解決

html5lib には、HTML + CSSサニタイザーが含まれています。現在は多すぎますが、ユースケースに合わせて変更するのはそれほど難しくないはずです。

こちらから見つけました。

他のヒント

<!> quot; safe <!> quot;の正確な意味は明確ではありません。それはかなり大きなトピックです...しかし、それが価値があるもののために:

私の意見では、ActiveState Cookbookのストリッピングパーサーは最も簡単な方法の1つですソリューション。クラスをほとんどコピーして貼り付けて、使用を開始できます。

コメントもご覧ください。最後の1つは、それがもう機能しないことを述べていますが、私はこれをどこかのアプリケーションで実行していて、それはうまく動作します。仕事から、私はそのボックスにアクセスできないので、週末に調べなければなりません。

HTMLparserモジュールを使用するか、BeautifulSoupをインストールし、それらを使用してHTMLを解析し、タグを無効化または削除します。これにより、リンクテキストはそのまま残りますが、Webブラウザコンポーネントで表示しているため、強調表示されず、クリックできません。

<A></A><SPAN></SPAN>に置き換え、テキスト装飾を変更して、リンクの場所を表示することで、実行内容を明確にすることができます。たぶん、通常とは異なる青の色合いと、破損を示す破線の下線です。そうすることで、クリックできないものをクリックするように人々を誤解させることなく、意図したとおりに表示することに少し近づきます。 Javascript または純粋なCSS は、セキュリティ上の理由でリンクが無効になったことを説明するツールチップを表示します。

同様のことを<IMG></IMG>タグで行うこともできます。これには、ページレイアウトを元のレイアウトに近づけるために、空白の長方形に置き換えることも含まれます。

Beautiful Soup でこのようなことをしましたが、HTMLparserが含まれていますPython。古いPythonディストリビューションには、現在廃止されているhtmllibがありました。電子メールメッセージのHTMLは完全に正しいとは限らないため、壊れたHTMLの意味を理解するのに優れたBeautiful Soup 3.0.7aを使用します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top