Nginx Aggiungi bandiera sicura ai cookie dal server proxy


12

Mozilla ha appena rilasciato un nuovo strumento per verificare la configurazione del tuo sito Web. observatory.mozilla.org

Ma la scansione si lamenta dei cookie (-10 punti): cookie di sessione impostato senza la bandiera sicura ...

Sfortunatamente il servizio in esecuzione dietro my nginx può impostare l'intestazione sicura solo se SSL termina direttamente lì e non quando SSL termina su nginx. Pertanto, il flag "Sicuro" non è impostato sui cookie.

È possibile in qualche modo aggiungere il flag "sicuro" ai cookie utilizzando nginx? La modifica della posizione / del percorso sembra essere possibile.

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

Risposte:


11

Conosco due modi per fare questo, nessuno dei due è eccezionale. Il primo è semplicemente abusare di proxy_cookie_path in questo modo:

proxy_cookie_path / "/; secure";

Il secondo è usare la direttiva more_set_headers dal modulo Headers More in questo modo:

more_set_headers 'Set-Cookie: $sent_http_set_cookie; secure';

Entrambi possono presentare problemi perché aggiungono ciecamente gli elementi. Ad esempio, se l'upstream imposta il flag sicuro , finirai per inviare al client un duplicato come questo:

Set-Cookie: foo=bar; secure; secure;

e nel secondo caso se l'app upstream non imposta un cookie nginx lo invierà al browser:

Set-Cookie; secure;

Questo è doubleplusungood, ovviamente.

Penso che questo problema debba essere risolto poiché molte persone lo hanno chiesto. Secondo me è necessaria una direttiva simile a questa:

proxy_cookie_set_flags * HttpOnly;
proxy_cookie_set_flags authentication secure HttpOnly;

ma ahimè, questo non esiste attualmente :(


Il percorso dei cookie sembra davvero una bella soluzione. Penso che ci proverò prima. Grazie per l'aiuto.
ST-DDT,

1
Ho sollevato una richiesta di funzionalità nel forum; si spera che l'autore sia interessato a questo.
Franklin Yu,

3

Prova a utilizzare nginx_cookie_flag_module . Risolverà il tuo problema.

Disclaimer: sono l'autore del modulo.


3
Potresti approfondire come il modulo è installato e configurato. Il file README sembra suggerire che richiede la ricostruzione di nginx, che potrebbe non essere accettabile in molte configurazioni.
Thomas Nyman,

Sì, l'utilizzo di questo modulo richiede la ricostruzione di Nginx. Altrimenti non potresti usare la sua direttiva. Questo vale per tutti i moduli di terze parti. In molti casi, la ricostruzione di nginx non richiede molto tempo.
Airis

@ThomasNyman La ricostruzione può essere evitata pagando NGINX Plus, come spiegato nelle istruzioni di NGINX .
Franklin Yu,

1
@Airis Quindi sei l'autore? Ottimo lavoro, amico, ma è meglio aggiungere un disclaimer.
Franklin Yu,

@Aris abbiamo provato ad usare il modulo con la versione 1.17.1 di ngnix: alpine, ma affrontiamo i seguenti errori quando proviamo a caricare i moduli su nginx.conf. 'module "/usr/local/nginx/modules/ngx_http_cookie_flag_filter_module.so" non è compatibile con i binari "
Lokesh,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.