Mawa Town

Mawaという人が作る小さな町でMawaTownです。技術と音楽が好き。

Djangoのsafeタグの機能調査結果

サイバーセキュリティプログラミング ―Pythonで学ぶハッカーの思考

サイバーセキュリティプログラミング ―Pythonで学ぶハッカーの思考

コメント

Djangoにはテンプレート言語にsafeタグというものがあり、HTML中で

 {{ comment|safe }} 

とすると、エスケープしなければいけないかもしれないHTMLタグをそのまま出力するようになる。ということで、挙動を自分なりにローカルで調査した。(デプロイ後はサーバー会社が関係するので、完全自前のローカル環境での危険性テストである。)

実験

下記のJSコード(コード自体は安全な環境でもよく使われているアラートを出すだけのもの)をsafeタグをかけて出力してみて、アラートダイアログがでると、XSSクロスサイトスクリプティング)の危険性があることがわかる

<script>alert('Hello from JS');</script>

Djangoで生成したHTMLフォームから投稿し、HTMLテンプレートに投稿内容をsafeタグをつけて出力すると、 アラートが出現!つまり、safeタグをつける&safeタグで出力する項目のあるDjangoフォームへの投稿は、XSSリスクがあることがよくわかりました。

なので、使えるシチュエーションはかなり限られていますね^^