Mozilla vient de publier un nouvel outil pour vérifier la configuration de votre site Web. Observatoire.mozilla.org
Mais le scan se plaint des cookies (-10 points): Séance Cookie Set sans le drapeau sécurisé ...
Malheureusement, le service fonctionnant derrière My Nginx ne peut définir l'en-tête sécurisé que si la SSL se termine directement et non lorsque SSL se termine sur NGinx. Ainsi, le drapeau "sécurisé" n'est pas défini sur les cookies.
Est-il possible d'ajouter le drapeau "sécurisé" aux cookies en quelque sorte à l'aide de Nginx? Modifier l'emplacement/chemin 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 sais que deux façons de le faire, ce n'est pas très grand. Le premier est d'abuser de proxy_cookie_path comme ceci:
proxy_cookie_path / "/; secure";
La seconde consiste à utiliser la directive de plus_set_headers à partir du module en-tête davantage comme ceci:
more_set_headers 'Set-Cookie: $sent_http_set_cookie; secure';
Ces deux peuvent introduire des problèmes car ils ajoutent aveuglément les articles. Par exemple, si l'amont définit le Secure Drapeau, vous allez remettre au client un duplicata comme celui-ci:
Set-Cookie: foo=bar; secure; secure;
et dans le second cas si l'application en amont ne définit pas un cookie nginx enverra ceci au navigateur:
Set-Cookie; secure;
Ceci est bien sûr doubleplusungood.
Je pense que ce problème doit être réparé autant de personnes qui l'ont posée à ce sujet. À 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.
Disclaimer: Je suis l'auteur du module.