2017-05-19 26 views
0

Django Rest Frameworkを使用して開発されたREST APIがあります。 POSTリクエスト(データベースに格納される前)のデータを文字列でエスケープしなければならないのか、DRFはすでにそれをしているのだろうかと思います。 私はDjangoがいくつかのautoescapingをしていることは知っていますが、それがDRFの場合も同様です。Django REST文字列エスケープ

+0

小さなテストを行いました.HTMLタグを含む文字列( 'Foo')を含むリクエストが送信されました。この文字列には何も起こらず、そのまま「そのまま」保存されました。私の質問は、XSS攻撃を避けるにはどうすればいいですか?エスケープされていない文字列をDBに保存すること、および/またはDjangoでレンダリングする前に心配する必要はありますか?私はDjangoのエスケープやstrip_tagsのようないくつかのユーティリティ関数を見ていますが、ifとwhenをいつ使うべきかについての情報は見つけられません。 – foobar

答えて

0

ユーザー入力をエスケープするは、XSS攻撃に対して1つの優れた防御策を提供します。通常は、レンダリングの時点で行われ、データが公開される時点では行われません。たとえば、Djangoのサーバー側のテンプレートでは、ORMではなくテンプレートで処理されます。これにより、開発者はニーズに基づいてデータをどのようにレンダリングするかを選択できます(一部のデータはマークダウンすることがあります)。

彼らは生のHTMLをレンダリングしたい場合、いくつかのクライアント側のフレームワークを見てみると、彼らデフォルトでは、すべてのエスケープ出力、および力の開発者が明示的に宣言するためには:

私がAPIになく、APIの消費者にこれを強制しようとしていないお勧めします。

関連する問題