通常のDjangoテストクライアントはCSRF検証を簡略化する場合があります。
CSRF自体を試験するときは、enforce_csrf_checks=Trueを指定します。
危険な無効化やGET更新処理を探します。
Djangoプロジェクトのルートです。
grep -RIn \
--exclude-dir=.git \
--exclude-dir=.venv \
--exclude-dir=node_modules \
-E 'csrf_exempt|request\.GET|@require_GET|CSRF_TRUSTED_ORIGINS' \
.
payments/views.py:42:@csrf_exempt
Webhookなど、理由が説明できる少数箇所だけが見つかります。
accounts/views.py:18:@csrf_exempt
admin_api/views.py:51:@csrf_exempt
profile/views.py:77:request.GET.get("email")
csrf_exemptが見つかったすべての箇所について、代替認証があるか確認します。
request.GETの利用自体は脆弱性ではありません。
GETパラメータを使って更新、削除、権限変更をしていないかを確認します。