4

Django 1.8 プロジェクト用にサイト全体の HTTPS をセットアップしています。私は Web セキュリティの経験がありません。

HTTP から HTTPS へのリダイレクトと HSTS をセットアップしています。

現在、Apache/mod_wsgi Web サーバーでこれを構成していました (PaaS を使用しているため、WSGI ルートの .htaccess ファイルを介して構成します)。

wsgi/.htaccess

# Redirect HTTP to HTTPS

RewriteEngine on
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [R,L]

# Add HSTS header
Header always set Strict-Transport-Security "max-age=63072000; includeSubdomains; preload"

# Deny rendering inside an iframe
Header always set X-Frame-Options DENY

Django の公式ドキュメントの SSL推奨事項に従って、本番環境の設定で Cookie を保護しています。

設定/prod.py

...
SESSION_COOKIE_SECURE = True
CSRF_COOKIE_SECURE = True
...

注:SECURE_PROXY_SSL_HEADER = (“HTTP_X_FORWARDED_PROTO”, “https”)まだ設定していません。PaaS がプロキシーと Web コンテナーの間でこのヘッダーをプロキシーして除去しているかどうかまだわからないからです。

Django (1.8 以降)には、SSL リダイレクトを実装し、HSTS ヘッダーやその他の便利なものを処理する (古い django-secure からの)セキュリティ ミドルウェアが付属しています。

Django にすべての HTTPS リダイレクト/HSTS 構成を処理させるべきですか、それとも Web サーバー レベルで処理させるべきですか? それぞれの選択のセキュリティ/パフォーマンスへの影響は何ですか?

参照/使用された参照:

https://en.wikipedia.org/wiki/HTTP_Strict_Transport_Security

https://garron.net/crypto/hsts/hsts-2013.pdf

https://cipherli.st/

https://mozilla.github.io/server-side-tls/ssl-config-generator/

https://security.stackexchange.com/questions/8964/trying-to-make-a-django-based-site-use-https-only-not-sure-if-its-secure

http://www.marinamele.com/2014/09/security-on-django-app-https-everywhere.html

https://raymii.org/s/tutorials/HTTP_Strict_Transport_Security_for_Apache_NGINX_and_Lighttpd.html

https://docs.djangoproject.com/en/1.8/topics/security/

4

1 に答える 1