Mozilla vient de sortir un nouvel outil pour vérifier la configuration de votre site Web. observatory.mozilla.org
Mais le scan se plaint de Cookies (-10 points): Jeu de cookies de session sans le drapeau Secure …
Malheureusement, le service exécuté derrière mon nginx ne peut définir l'en-tête sécurisé que si le SSL se termine directement et non lorsque SSL se termine sur le nginx. Ainsi, le drapeau "Secure" n'est pas défini sur les cookies.
Est-il possible d'append le drapeau "sécurisé" aux cookies en utilisant nginx? Modifier l'location / le path semble être possible.
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
Je connais deux façons de faire ça, ni l'un ni l'autre. Le premier est de simplement abuser de proxy_cookie_path comme ceci:
proxy_cookie_path / "/; secure";
La seconde est d'utiliser la directive more_set_headers du module Headers More comme ceci:
more_set_headers 'Set-Cookie: $sent_http_set_cookie; secure';
Les deux peuvent introduire des problèmes parce qu'ils ajoutent aveuglément les articles. Par exemple, si l'amont définit le drapeau sécurisé , vous finirez par envoyer au client un doublon comme celui-ci:
Set-Cookie: foo=bar; secure; secure;
et dans le second cas si l'application amont ne met pas un cookie nginx l'enverra au browser:
Set-Cookie; secure;
C'est doubleplusungood, bien sûr.
Je pense que ce problème doit être réglé comme beaucoup de gens l'ont demandé. À mon avis, une directive est nécessaire quelque chose comme ceci:
proxy_cookie_set_flags * HttpOnly; proxy_cookie_set_flags authentication secure HttpOnly;
mais hélas, cela n'existe pas actuellement 🙁
Essayez d'utiliser nginx_cookie_flag_module . Cela résoudra votre problème.