×
サイバー攻撃について

通常のDjangoテストクライアントはCSRF検証を簡略化する場合があります。

CSRF自体を試験するときは、enforce_csrf_checks=Trueを指定します。


17-6. コードを検索する

目的

危険な無効化や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パラメータを使って更新、削除、権限変更をしていないかを確認します。