CSRFトークンとは?
しーえすあーるえふとーくん
CSRFトークンとは、Webアプリケーションへの不正なリクエストを防ぐために使われる使い捨ての認証用文字列です。
CSRFトークン(Cross-Site Request Forgery Token)とは、Webフォームやリクエストに埋め込まれる一時的な秘密の文字列で、サイトをまたいだ不正操作攻撃(CSRF攻撃)を防ぐためのセキュリティ機構です。
CSRF攻撃とは、ユーザーがログイン中の正規サービスに対して、悪意ある第三者のサイトから勝手にリクエストを送り込む手口です。たとえば悪意あるページを開いただけで、ユーザーのSNSアカウントから投稿が行われたり、銀行送金が実行されたりする危険があります。CSRFトークンはこれを防ぐために導入されました。
仕組みとしては、サーバーがフォームをHTMLとして返す際に、セッションに紐づいたランダムな文字列(トークン)を隠しフィールドやHTTPヘッダに含めます。フォーム送信時にこのトークンをサーバー側で照合し、一致しない場合はリクエストを拒否します。別ドメインの攻撃者はこのトークン値を読み取れないため、正当なリクエストとの区別が可能になります。
主な実装方法は以下のとおりです。
- HTMLフォームの隠しフィールドにトークンを埋め込む
- Ajaxリクエストではカスタムヘッダ(X-CSRF-Tokenなど)に付与する
- リクエストごとに新しいトークンを発行する(ワンタイム方式)
- セッション単位でトークンを維持する方式もある
LaravelやDjangoなどの主要Webフレームワークは、CSRFトークンの生成と検証を自動的に行う機能を標準で備えています。適切に実装することで、CSRF攻撃からユーザーを効果的に保護できます。
使い方・例文
ログインが必要なWebサービスのフォーム送信時に、隠しフィールドとして埋め込まれ、サーバー側で正規のリクエストかどうかを確認する場面で登場します。
この用語をシェア
最終更新: