gpt4 book ai didi

django - Apache/mod_wsgi 和 Django 上的 HTTPS 和 HSTS

转载 作者:行者123 更新时间:2023-12-03 21:43:56 33 4
gpt4 key购买 nike

我正在为我的 Django 1.8 项目设置站点范围的 HTTPS。我在网络安全方面没有经验。

我正在将 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 recommendations ,我正在我的生产设置中保护 cookie:

设置/prod.py
...
SESSION_COOKIE_SECURE = True
CSRF_COOKIE_SECURE = True
...

注意:我没有设置 SECURE_PROXY_SSL_HEADER = (“HTTP_X_FORWARDED_PROTO”, “https”)但是,因为我还不确定 PaaS 是否正在代理和剥离代理和 Web 容器之间的这个 header 。

Django(从 1.8 开始)现在带有 security middleware (来自旧的 django-secure),它实现 SSL 重定向,并处理 HSTS header 和其他好东西。

我应该让 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/

最佳答案

你问这个问题已经有一段时间了。反正我也遇到过类似的疑惑。 The documentation我们应该在应用程序级别还是在 Web 服务器上启用 HSTS 是不明确的:

HSTS may either be configured with SECURE_HSTS_SECONDS, SECURE_HSTS_INCLUDE_SUBDOMAINS, and SECURE_HSTS_PRELOAD, or on the Web server.



The deployment checklist ( manage.py check --deploy ) 建议设置 SECURE_HSTS_SECONDS在生产上。

另一方面, Django book状态:

HSTS is usually configured on the web server.



考虑到安全性,服务器设置和 django 中间件都做同样的事情。他们在响应头中设置了“Strict-Transport-Security”。我相信 web 服务器的性能比 django 中间件更好,尽管我还没有测试过。

另外, Two Scoops of Django建议最好将 HTTPS 重定向设置放在 Web 服务器上:

Performance-wise, it’s better to do this at the web server level (p. 347)

关于django - Apache/mod_wsgi 和 Django 上的 HTTPS 和 HSTS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32405869/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com