GAEをやめる場合のCSRFの注意点

GAEを使っていたアプリからGAEを外す作業をしたら、今まで正常に動いていたCSRFのチェックに毎回引っかかるようになってしまいました。その原因は、Djangoのバージョンによる物だと思いますが、CSRFのためのinputタグの出力形式が異なっていたためだとわかりました。

--- GAEで使っていたバージョン ---

<div style='display:none;'><input type='hidden' id='csrfmiddlewaretoken' name='csrfmiddlewaretoken' value='{{ CSRFMIDDLEWARETOKEN }}' /></div>
--- Django 1.3.0" ---

<div style='display:none'><input type='hidden' name='csrfmiddlewaretoken' value='{{ CSRFMIDDLEWARETOKEN }}' /></div>

上記の通り、「id='csrfmiddlewaretoken'」がなくなっています。今まではPOSTデータの「csrfmiddlewaretoken」は、jQueryを使った下記のようなコードで設定していたため空で渡り、CSRFのチェックに必ず引っかかるようになっていました。

var csrfToken = $('#csrfmiddlewaretoken').val();

以下のようにname属性を使って取得するようにしたら、正常にチェックが通るようになりました。

var csrfToken = $("input[name='csrfmiddlewaretoken']").val();

この記事が役に立った場合、シェアしていただけると励みになります!!