Spring SecurityでCSRFの設定を行う




どうも高妻です。Twitterでプログラミングのことや暗号通貨のことをつぶやいているのでよかったらフォローしてください。  

CSRFとは

クロスサイトリクエストフォージェリの略でWEBアプリーケションの脆弱性の一つです。

Webアプリケーションが全く関係のないWEBサイトからのリクエストを受け付けてそのまま更新処理をしてしまうことをいいます。

Spring SecurityでのCSRF対策方法

Spring Securityを使うとログイン、CSRF、CORSなどの設定が簡単にできます。

インストール

gradleでインストールする場合は下記をbuild.gradleに追加するだけです。

CSRF対策

CSRFの設定はこれだけです。ignoringAntMatchers()はCSRFを対象外としたいパスを設定できます。本当はログイン処理もCSRFした方がいいです。

withHttpOnlyFalse()はCookieのHttpOnlyをfalseにしてJavascriptからCookieを扱うことができるようになります。setCookiePath()を使うとCookieのPath属性を指定することができます。

参考記事:CookieのDomain、Path、Secure、HttpOnly、max-age(expire)属性の設定

注意点としてセッションストアの設定もしておいてください。CSRFのトークン情報がセッションとして保存されるのでRedisを使うのがいいかと思います。

configureRedisAction()はElastiCacheのRedsiを使う時に必要になります。

CSRFトークンの確認と送信

CSRFトークンはCookieにXSRF-TOKENという名前で入っています。

これをX-CSRF-TOKENというヘッダーにいれてPOST時に一緒に送ってあげるとPOSTが実行できるようになります。

まとめ

  • Spring Securityを使うとCSRF対策が簡単に対応できる
  • トークンはCookieに入って送られて来るのでそれをPOST時にヘッダーでいれて返してあげる

Spring Securityは他にもCORS設定、認証設定が簡単にできるのでおすすめです。

関連記事:Spring SecurityでCORSの設定を行う

The following two tabs change content below.

高妻智一

2013年CyberAgent新卒入社 スマホゲームを作る子会社に所属し、サーバーサイドのエンジニアを担当。2年目の終わりから新規子会社の立ち上げに参加し、サーバーサイドのエンジニアリーダーとしてサービースのリリースから運用までを担当。 現在はTwitterなどSNSのテキスト解析を行うソーシャルメディア分析のサーバーサイドを開発中。言語はNode.js、Kotlinを使用。






コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です