Configuration

Nginx 從代理伺服器向 Cookie 添加安全標誌

  • April 4, 2019

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

我知道有兩種方法可以做到這一點,但都不是很好。第一個是像這樣濫用 proxy_cookie_path :

proxy_cookie_path / "/; secure";

第二種是使用Headers More 模組中的 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;

但唉,這目前不存在:(

引用自:https://unix.stackexchange.com/questions/306463