Djangoのセキュリティ対策設定

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