私は、任意のHTMLを許可するCKEditorのようなエディタをユーザが使用できるWebアプリケーションでXSS/JavaScriptインジェクションの脆弱性を削除したいと思います(エディタの特定の選択肢が任意のHTMLを許可するかどうか、とにかく任意のHTMLを送信する)。 SCRIPTタグ、ONCLICK、家族、または他のものであれ、JavaScriptはありません。ターゲットプラットフォームはPythonとDjangoです。Django/PythonでWYSIWYGに入力されたHTMLの安全性をどのように確保できますか?
ここで私の最高のオプションは何ですか?私は、タグと属性をホワイトリストに入れる実装を公開しています。つまり、ユーザーがHTMLで構築できるすべてのものを提出できるようにするために必要なものは表示されませんが、のみ JavaScriptが削除されます。かなり豊かなリッチテキストを可能にする、サポートされているタグの可用性を持つリッチテキストを用意して嬉しいです。また、Markdownを作成するエディタにも公開し、データが保存される前にすべてのHTMLタグを削除します。
また、サブミッションがテストに失敗したという例外がスローされた場合には、サニタイズされたテキストを生成する必要はないと考えています(HTML操作はもっと簡単ですが、Markdown実装のソリューションも考えています)。 (Ergo、文字列を小文字にして、 '<スクリプト'、 'onclick'などで検索すると十分かもしれません)
おそらく私の選択肢は解決策で、もし私が選択すれば、タグのホワイトリストになりますおよび属性名。
そこにある最善の解決策はありますか?
[bleach](https://pypi.python.org/pypi/bleach)のようなものをチェックしましたか?それはまさにあなたが描いているものです。それはを通していくつかのタグを可能にし、私はあなたが[このよう]カスタムフィルタを作成することができると思います '< >' – user2896976
で悪質なものを置き換える(http://stackoverflow.com/a/41434870/6396981)... –