ALLOWED_HOSTS = [
"www.example.com",
"internal.example.com",
"admin.example.com",
]
CSRF_TRUSTED_ORIGINS = [
"https://www.example.com",
"https://internal.example.com",
"https://admin.example.com",
]
SESSION_COOKIE_SECURE = True
CSRF_COOKIE_SECURE = True
SECURE_PROXY_SSL_HEADER = (
"HTTP_X_FORWARDED_PROTO",
"https",
)
ただし、SECURE_PROXY_SSL_HEADERは無条件に設定してよいものではありません。
Django公式ドキュメントは、プロキシを管理しているか、対象ヘッダーを適切に設定・削除することが保証されている場合だけ使用するよう注意しています。
攻撃者がDjangoへ直接到達できる状態で転送ヘッダーを信頼すると、偽装されたヘッダーを受け入れる危険があります。
そのため、次の条件を満たす必要があります。
Djangoへ直接到達させない
+
ALBなど正規経路以外をSecurity Groupで拒否する
+
プロキシで外部入力の転送ヘッダーを上書き・除去する