Mozilla 刚刚发布了一个新工具来检查您的网站配置。观察站.mozilla.org
但扫描抱怨 Cookie(-10 分):会话 cookie 设置没有安全标志...
不幸的是,在我的 nginx 后面运行的服务只能在 SSL 直接终止时设置安全标头,而不是当 SSL 在 nginx 上终止时设置安全标头。因此,cookie 上未设置“安全”标志。
是否可以使用 nginx 以某种方式将“安全”标志附加到 cookie?修改位置/路径似乎是可能的。
http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_cookie_domain
http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_cookie_path
答案1
我知道有两种方法可以做到这一点,但都不是很好。第一种是像这样滥用 proxy_cookie_path :
proxy_cookie_path / "/; secure";
第二种是使用 more_set_headers 指令标题更多 像这样的模块:
more_set_headers 'Set-Cookie: $sent_http_set_cookie; secure';
这两种方法都会带来问题,因为它们盲目地添加项目。例如,如果上游设置安全的标记您最终将向客户端发送如下副本:
Set-Cookie: foo=bar; secure; secure;
在第二种情况下,如果上游应用程序没有设置 cookie,nginx 会将其发送到浏览器:
Set-Cookie; secure;
当然,这是双倍不利的。
我认为这个问题需要解决,因为很多人都问过这个问题。在我看来,需要这样的指令:
proxy_cookie_set_flags * HttpOnly;
proxy_cookie_set_flags authentication secure HttpOnly;
但可惜的是,目前还不存在:(
答案2
尝试使用nginx_cookie_flag_module。它会解决你的问题。
免责声明:我是该模块的作者。