2

この質問はすでにここで何度も尋ねられており、生の HTML 入力をデータベースに保存し、出力時にエスケープする必要があることにほとんどの人が同意しています。ただし、私のケースは少し異なる場合があると思います。

ユーザーはいくつかのタグ (em、strong、span など) を入力できますが、他のタグ (script、style、meta など) は削除されbleach.cleanます(エスケープしないでください) すべての安全でないタグ。私にとって、これは、表示のためにコンテンツをエスケープすることよりも、検証/サニタイズすることのように感じます。特に、データを提供する形式 (HTML、JSON、またはその他の形式) に関係なく、安全でないタグを削除することになります。

出力時にサニタイズする必要がありますか、それとも入力時にサニタイズする方がよい場合ですか?

ボーナス質問:

これがこのシナリオの適切なアプローチである場合、django で実装する最良の方法は何ですか? フォームレベルの検証またはモデルレベルの検証?

4

1 に答える 1

1

消毒に関して言えば、やり過ぎということはありません。HTML自体をサニタイズし、SQLインジェクション攻撃から保護するために、すべてのユーザー入力をデータベースに挿入する前に常にサニタイズする必要があります。追加のチェックを実行し、データベースから出力されて Web ページに配置されるときに出力をサニタイズしても問題はありません。

于 2016-02-17T03:42:25.617 に答える