ST-*_*DDT 14 configuration nginx
Mozilla 刚刚发布了一个新工具来检查您的网站配置。observatory.mozilla.org
但是扫描抱怨 Cookies(-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
Lar*_*rry 13
我知道有两种方法可以做到这一点,但都不是很好。第一种是像这样滥用 proxy_cookie_path:
proxy_cookie_path / "/; secure";
Run Code Online (Sandbox Code Playgroud)
第二种是使用Headers More 模块中的 more_set_headers 指令,如下所示:
more_set_headers 'Set-Cookie: $sent_http_set_cookie; secure';
Run Code Online (Sandbox Code Playgroud)
这两者都会引入问题,因为它们盲目地添加项目。例如,如果上游设置了安全标志,您将最终向客户端发送这样的副本:
Set-Cookie: foo=bar; secure; secure;
Run Code Online (Sandbox Code Playgroud)
在第二种情况下,如果上游应用程序没有设置 cookie,nginx 会将其发送到浏览器:
Set-Cookie; secure;
Run Code Online (Sandbox Code Playgroud)
当然,这是双重加不好。
我认为这个问题需要解决,因为很多人都问过这个问题。在我看来,需要这样的指令:
proxy_cookie_set_flags * HttpOnly;
proxy_cookie_set_flags authentication secure HttpOnly;
Run Code Online (Sandbox Code Playgroud)
但唉,这目前不存在:(
小智 5
尝试使用nginx_cookie_flag_module。它将解决您的问题。
免责声明:我是该模块的作者。