ITの隊長のブログ

ITの隊長のブログです。Rubyを使って仕事しています。最近も色々やっているお(^ω^ = ^ω^)

【Play Framework】エラー「RuntimeException: Missing CSRF Token」

スポンサードリンク

CSRFってご存じですか?


詳しくの説明は別の機会でログを残しますが(俺もまだよくわかっていない)、ワンタイムidをviewにセットして、セッション書き換えなどの脆弱性から守るための仕組みです。


問い合わせフォームとかでよく使われると思っていますが、今回Play Frameworkで開発していて、Google Chromeではうまくいった処理が何故かFireFoxSafariで失敗する現象を確認したのでメモします。


といっても、単純でした。そもそも効いていなかったのが原因でした。


詳しくは、viewではCSRFを設定していたけど、controllerでは設定していなかったのが原因です。

    // 表示するAction
    @AddCSRFToken // これがなかった。
    public static Result show()  {
       // 省略
    }


    // 更新するAction
    @RequireCSRFCheck // これもなかった。
    public static Result post(long id) {
      // 省略
    }


Google Chromeでは何故かエラーが出ず、他のブラウザではチェックが厳しいのでエラーが発生したと見るべきでしょう。


うーむ。Chrome...(俺が悪いんだけどねorz)