Djangoのsafeタグの機能調査結果
サイバーセキュリティプログラミング ―Pythonで学ぶハッカーの思考
- 作者: Justin Seitz,青木一史,新井悠,一瀬小夜,岩村誠,川古谷裕平,星澤裕二
- 出版社/メーカー: オライリージャパン
- 発売日: 2015/10/24
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (11件) を見る
コメント
Djangoにはテンプレート言語にsafeタグというものがあり、HTML中で
{{ comment|safe }}
とすると、エスケープしなければいけないかもしれないHTMLタグをそのまま出力するようになる。ということで、挙動を自分なりにローカルで調査した。(デプロイ後はサーバー会社が関係するので、完全自前のローカル環境での危険性テストである。)
実験
下記のJSコード(コード自体は安全な環境でもよく使われているアラートを出すだけのもの)をsafeタグをかけて出力してみて、アラートダイアログがでると、XSS(クロスサイトスクリプティング)の危険性があることがわかる
<script>alert('Hello from JS');</script>
Djangoで生成したHTMLフォームから投稿し、HTMLテンプレートに投稿内容をsafeタグをつけて出力すると、 アラートが出現!つまり、safeタグをつける&safeタグで出力する項目のあるDjangoフォームへの投稿は、XSSリスクがあることがよくわかりました。
なので、使えるシチュエーションはかなり限られていますね^^