CSRF Token Mismatch
CSRFトークンの検証に失敗しフォーム送信やAPIリクエストが拒否されるエラー
概要
CSRF Token Mismatch は、Cross-Site Request Forgery(CSRF)対策のトークン検証に失敗した際に発生するエラーです。フォーム送信やAPIリクエストに含まれるトークンがサーバー側の期待値と一致しない場合に拒否されます。
エラーメッセージ
419 | Page Expired (Laravel)
Forbidden (403): CSRF verification failed. Request aborted. (Django)
ActionController::InvalidAuthenticityToken (Rails)
Error: CSRF token mismatch (Express/csurf)
原因
- トークンの欠落: フォームやリクエストにCSRFトークンが含まれていない
- セッション切れ: セッションが期限切れになりトークンが無効化
- キャッシュされたページ: CDNやブラウザキャッシュにより古いトークンが使われている
- 複数タブの操作: 別タブでログアウト後に元のタブで送信
- SPA での設定不備: Ajax/fetchリクエストにトークンが付与されていない
解決策
1. Laravel
| |
| |
| |
2. Django
| |
| |
| |
3. Rails
<%# フォームヘルパーは自動でトークンを含める %>
<%= form_with url: '/submit', method: :post do |f| %>
<%= f.text_field :name %>
<%= f.submit '送信' %>
<% end %>
| |
| |
4. Express.js(csurf / csrf-csrf)
| |
5. SPA(React/Vue)でのCSRF対策
| |
関連エラー
- Session Expired - セッション切れによるトークン無効化
- HTTP 403 Forbidden - アクセス拒否エラー全般
- CORS with Credentials Error - 認証情報付きCORSエラー
Security の他のエラー
この記事は役に立ちましたか?