CSRF トークン

対象の脆弱性:CSRF

攻撃者は CSRF の脆弱性をついて、攻撃をしてくることがあります。 今回はその対策に関する話です。


CSRF トークン

CSRF(クロスサイトリクエストフォージェリ)という攻撃・脆弱性があります。 これを解決する手段が CSRF トークンの利用です。

フレームワーク・ライブラリ

CSRF トークンの生成等を機能としても持つ、フレームワークやライブラリが存在します。それを利用しましょう。

予備知識

ここから予備知識です。読まなくても構いません。

事前知識:CSRF

生成・利用の流れ

以下の 1. ~ 3. を繰り返します。

1. CSRF トークンを生成

十分な長さ(16 進数で 32 桁程度の)を持った疑似乱数を生成します。 この疑似乱数のことを CSRF トークンといいます。

この CSRF トークンは一旦サーバ側で保存しておきます。

2. HTML タグに付加

トークンを HTML の input タグ(hidden がオン)の value に付加させます。

<input type="hidden" name="csrf_token" value="ここにトークン" />

3. 回収・チェック

リクエストが送信されてきたら、サーバの保存した CSRF トークンと比較して、 そのリクエストに正しい CSRF トークンが付加されているかを確認します。