状態を変更する処理をGETで実行しない
DjangoのCsrfViewMiddlewareを有効にする
HTMLフォームに{% csrf_token %}を入れる
JavaScriptから送信する場合はX-CSRFTokenヘッダーを付ける
セッションCookieとCSRF CookieにSecureと適切なSameSiteを設定する
OriginおよびRefererの検証を無効化しない
CSRF_TRUSTED_ORIGINSを必要最小限にする
XSS、サブドメイン、CORS、OAuth、WebSocketも一緒に確認する
送金や認証情報変更では再認証やワンタイム確認を追加する
Djangoをセキュリティサポート中のバージョンへ更新する
DjangoではCSRF防御が標準で有効です。独自実装へ置き換えるより、標準機能を正しく使う方が安全です。
2026年7月29日時点では、Django 6.0系と5.2 LTS系にセキュリティ更新が提供されており、2026年7月7日にDjango 6.0.7と5.2.16が公開されています。Django 4.2は2026年4月に延長サポートが終了しました。CSRF対策だけでなく、今後の脆弱性修正を受け取るためにも、4.2系を使っている環境は5.2 LTS以降への移行が必要です。