ドキュメントで提案されているように、ユーザー入力をクリーンアップするために html5lib.sanitizer を使用しようとしています
問題は、悪いタグをエスケープするだけでなく、完全に削除したいことです (とにかく悪い考えのようです)。
ここのパッチで提案されている回避策は、期待どおりに機能しません ( a の内部コンテンツを保持します<tag>content</tag>
)。
具体的には、次のようなことをしたいです。
入力:
<script>bad_thing();</script>
<style>* { background: #000; }</style>
<h1>Hello world</h1>
Lorem ipsum
出力:
<h1>Hello world</h1>
Lorem ipsum
それを達成する方法についてのアイデアはありますか?BeautifulSoup を試してみましたが、うまく動作しないようです。また、lxml<p></p>
は非常に奇妙な場所 (たとえば、src 属性の周囲) にタグを挿入します。これまでのところ、html5lib は、タグをエスケープする代わりにタグを削除することができれば、この目的に最適なようです。