Django settings.py增加下面配置:
SESSION_COOKIE_SECURE=True
SESSION_COOKIE_HTTPONLY=True
SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTOCOL', 'https')
Nginx 反向代理配置:
location /
{
...
proxy_set_header X_FORWARDED_PROTO https;
...
}
参数说明:
SECURE_PROXY_SSL_HEADER
参考网址:https://docs.djangoproject.com/en/2.2/ref/settings/#std:setting-SECURE_PROXY_SSL_HEADER
默认: None
告诉Django该请求是否通过HTTPS进入,并设置 SECURE_PROXY_SSL_HEADER为Django知道要查找的标头。
设置一个包含两个元素的元组 - 要查找的标题的名称和所需的值。例如:
SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')
这告诉Django信任X-Forwarded-Proto来自我们代理的头,并且只要它的值是'https',那么请求就保证是安全的(即,它最初是通过HTTPS传入的)。
请注意,标题必须采用request.META- 所有大写字母使用的格式,并且可能以HTTP_。(请记住,'HTTP_'在使标题可用之前,Django会自动添加到x-header名称的开头request.META。)
SESSION_COOKIE_HTTPONLY
默认: True
是否HttpOnly在会话cookie上使用标志。如果设置为 True,则客户端JavaScript将无法访问会话cookie。
HttpOnly是Set-Cookie HTTP响应头中包含的标志。这是其中的一部分用于cookie的 RFC 6265标准,可以是一种有用的方法,可以降低客户端脚本访问受保护cookie数据的风险。
这使得攻击者将跨站点脚本漏洞升级为完全劫持用户会话变得微不足道。关闭它的原因并不是很多。您的代码不应该从JavaScript读取会话cookie。
SESSION_COOKIE_SECURE
是否对会话cookie使用安全cookie。如果设置为 True,则cookie将被标记为“安全”,这意味着浏览器可以确保cookie仅在HTTPS连接下发送。
发表评论