Я настраиваю HTTPS на всем сайте для своего проекта Django 1.8. Я не разбираюсь в веб-безопасности.
Я настраиваю перенаправление HTTP на HTTPS и HSTS.
Прямо сейчас я настраивал это на своем веб-сервере Apache / mod_wsgi (я использую PaaS, поэтому настраиваю его через файл .htaccess в корне WSGI):
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, я m защита файлов cookie в моих производственных настройках:
settings / prod.py
...
SESSION_COOKIE_SECURE = True
CSRF_COOKIE_SECURE = True
...
Примечание: я еще не устанавливаю SECURE_PROXY_SSL_HEADER = (“HTTP_X_FORWARDED_PROTO”, “https”)
, потому что я еще не уверен, проксирует ли PaaS и удаляет ли этот заголовок между прокси и веб-контейнером.
Django (начиная с версии 1.8) теперь поставляется с безопасностью промежуточное ПО (из старого django-secure), которое реализует перенаправления SSL и обрабатывает заголовок HSTS и другие приятные вещи.
Должен ли я позволить Django обрабатывать все конфигурации перенаправления HTTPS / HSTS или делать это на уровне веб-сервера? Каковы последствия каждого выбора для безопасности / производительности?
Литература прочитана / использована:
https://en.wikipedia.org/wiki/HTTP_Strict_Transport_Security
https://garron.net/crypto/hsts/hsts-2013.pdf
https://mozilla.github.io/server-side-tls/ssl-config-generator/
http://www.marinamele.com/2014/09/security-on-django-app-https-everywhere.html.
https://docs.djangoproject.com/en/1.8/topics/security/ < / а>