この質問はすでにここで何度も尋ねられており、生の HTML 入力をデータベースに保存し、出力時にエスケープする必要があることにほとんどの人が同意しています。ただし、私のケースは少し異なる場合があると思います。
ユーザーはいくつかのタグ (em、strong、span など) を入力できますが、他のタグ (script、style、meta など) は削除されbleach.clean
ます(エスケープしないでください) すべての安全でないタグ。私にとって、これは、表示のためにコンテンツをエスケープすることよりも、検証/サニタイズすることのように感じます。特に、データを提供する形式 (HTML、JSON、またはその他の形式) に関係なく、安全でないタグを削除することになります。
出力時にサニタイズする必要がありますか、それとも入力時にサニタイズする方がよい場合ですか?
ボーナス質問:
これがこのシナリオの適切なアプローチである場合、django で実装する最良の方法は何ですか? フォームレベルの検証またはモデルレベルの検証?