Djangoのセキュリティ対策設定
Djangoの管理コマンドには、プロジェクト構成の検証用コマンドcheck
が用意されています。 このコマンドを実行すると、アプリケーション起動時にエラーとなる記述を、アプリケーションを実行せずに確認できますが、 --deploy
オプションを使うと、本番環境向けのセキュリティ関連の設定をチェックができます。
$ python manage.py check --deploy
表示される警告は、次のソースをsetting.pyに追記することで非表示にすることができます。
目次
security.W004
# security.W004
SECURE_HSTS_SECONDS = 31536000
SECURE_HSTS_INCLUDE_SUBDOMAINS = True
security.W006
# security.W006
SECURE_CONTENT_TYPE_NOSNIFF = True
security.W007
# security.W007
SECURE_BROWSER_XSS_FILTER = True
security.W008
常時SSL化設定をONできます。
# security.W008
SECURE_SSL_REDIRECT = True
security.W012, security.W016, security.W017
CookieのSecure属性関連の設定です。Ajaxなどを使用する場合は逆に設定しない方が良いかも?
# security.W012
SESSION_COOKIE_SECURE = True
# security.W016, security.W017
CSRF_COOKIE_SECURE = True
CSRF_COOKIE_HTTPONLY = True
security.W019
# security.W019
X_FRAME_OPTIONS = 'DENY'
ソースまとめ
setting.py
# security.W004
SECURE_HSTS_SECONDS = 31536000
SECURE_HSTS_INCLUDE_SUBDOMAINS = True
# security.W006
SECURE_CONTENT_TYPE_NOSNIFF = True
# security.W007
SECURE_BROWSER_XSS_FILTER = True
# security.W008
SECURE_SSL_REDIRECT = True
# security.W012
SESSION_COOKIE_SECURE = True
# security.W016, security.W017
CSRF_COOKIE_SECURE = True
CSRF_COOKIE_HTTPONLY = True
# security.W019
X_FRAME_OPTIONS = 'DENY'
# security.W021
SECURE_HSTS_PRELOAD = True