CSRFトークン【CSRF token】
概要

Webサイトの多くは、ログイン状態の維持にCookieを利用している。ブラウザは特定のサイトへ通信する際にそのサイトのCookieを自動的に送信するため、悪意ある第三者が別のサイトから利用者のブラウザを介してリクエストを送った場合、サーバは正規の操作と区別できないことがある。
CSRFトークンはこの「CSRF」(Cross-Site Request Forgery)問題に対処する仕組みである。サーバはフォームを表示する際にランダムな値を生成し、フォームの隠しフィールドなどに埋め込んで利用者へ送る。利用者がフォームを送信するとトークンも同時に送られ、サーバは受け取った値が自身の発行したものと一致するかを検証する。
外部サイトから送り込まれたリクエストはこのトークンを持たないため、サーバはこれを見分けて処理を拒否できる。トークンはCookieとは異なりブラウザが自動的に付与しないため、正規の画面を経由しなければ取得できない。一致しない場合やトークンが存在しない場合は、不正なリクエストと判断できる。
トークンは固定せず、利用者ごとまたはセッションごとに発行され、一定時間の経過や送信後に無効化されることが多い。フォームを表示する度に新しい値を発行する実装もある。Webページ上からJavaScriptにより非同期通信を行うシステムではHTTPヘッダにトークンを含めて送信する方式も用いられている。
データの登録や更新、削除といった状態変化を伴う操作が不正に行われることを防ぐ仕組みとして用いられ、参照のみのGETリクエストには通常使用しない。多くのWebアプリケーションフレームワークにはCSRFトークンの生成と検証の機能が標準で組み込まれており、開発者が個別に実装しなくとも自動的に処理される場合がある。