×
サイバー攻撃について

CSRFとは?歴史・攻撃の種類・トークン防御・Djangoでの守り方を徹底解説

はじめに


クロスサイトリクエストフォージェリ(Cross-Site Request Forgery:CSRF)は、ログイン中の利用者になりすまして、パスワード変更、メールアドレス変更、送金、設定変更などを実行させる攻撃です。

攻撃者がパスワードやセッションCookieを盗むとは限りません。

利用者のブラウザが、ログイン済みサイトへCookieを自動送信する性質を悪用します。

主要ブラウザのSameSite Cookieや、Djangoなどのフレームワーク標準防御によって、昔ながらの単純なCSRFは成功しにくくなりました。しかし、CSRFが消滅したわけではありません。

GETによる状態変更、不完全なトークン検証、SameSiteの誤設定、OAuthログイン、サブドメイン侵害、WebSocket、クライアントサイドCSRFなど、現代のWeb構成に合わせた攻撃面が残っています。

この記事では、CSRFの歴史、種類、成立条件、防御方式、Djangoでの実装、確認方法、再発防止まで順番に解説します。


結論・要点

CSRF対策の結論は、1つの仕組みに依存せず、複数の防御を重ねることです。

特に重要なのは、次の構成です。