クリックジャッキングは、透明なiframeなどを重ねて、利用者に見えていないボタンを押させる攻撃です。
CSRFは、利用者がボタンを押さなくても自動送信で成立する場合があります。
DjangoではXFrameOptionsMiddlewareやCSPのframe-ancestorsを使って、クリックジャッキングも別途防ぎます。
セッションCookieだけを確認する状態は、住所だけで本人確認しているようなものです。
CSRFトークンは、正規画面を開いた利用者だけが取得できる合鍵です。
認証Cookie + CSRFトークン
│
▼
両方が正しい場合だけ状態変更を許可
攻撃者サイトはリクエストを送信できても、Same-Origin Policyによって正規サイトのレスポンスを自由に読めません。
そのため、秘密で予測困難なトークンを正しく取得できません。
安全なトークンには次の性質が必要です。