Pray FrameworkのCSRFフィルタ


Play(Java)のCSRFフィルタ適用。

環境

  • Play Framework 2.2.1
  • JDK 7u45

依存関係の追加

$APP_ROOT/build.sbtに依存関係を追加。

build.sbt
libraryDependencies ++= Seq(
  // snip
  filters, // 追加
  // snip
)

CSRFフィルタ

app/Global.javaにフィルタを定義。
(Global.javaはデフォルトでは存在しない)

app/Global.java
import play.*;
import play.api.mvc.EssentialFilter;
import play.filters.csrf.CSRFFilter;

public class Global extends GlobalSettings {
  // snip

  @Override
  @SuppressWarnings({"rawtypes", "unchecked"})
  public <T extends EssentialFilter> Class<T>[] filters() {
    return new Class[]{CSRFFilter.class};
  }
}

適用

フォーム生成に適用。

app/views/login.scala.html
@helper.form(action = helper.CSRF(routes.Sessions.createSession)) {}

Tokenが付与される。

<form action="/createSession?csrfToken=965b90f298a5bc76f397e6d1d384024c68e19973-1387604063062-6912d86536eaab2a8fe1abc8" method="POST" >