Nginx Agregar bandera segura a las cookies del servidor proxy

12

Mozilla acaba de lanzar una nueva herramienta para verificar la configuración de su sitio web. observatory.mozilla.org

Pero el escaneo se queja de cookies (-10 puntos): cookie de sesión establecida sin el indicador de seguridad ...

Desafortunadamente, el servicio que se ejecuta detrás de mi nginx solo puede establecer el encabezado seguro si el SSL termina allí directamente y no cuando SSL termina en el nginx. Por lo tanto, el indicador "Seguro" no está configurado en las cookies.

¿Es posible agregar la bandera "segura" a las cookies de alguna manera usando nginx? Parece posible modificar la ubicación / ruta.

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

ST-DDT
fuente

Respuestas:

11

Conozco dos formas de hacer esto, ninguna de las dos es genial. El primero es abusar de proxy_cookie_path de esta manera:

proxy_cookie_path / "/; secure";

El segundo es usar la directiva more_set_headers del módulo Headers More de esta manera:

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

Ambos pueden presentar problemas porque agregan los elementos a ciegas. Por ejemplo, si el flujo ascendente establece el indicador de seguridad , terminará enviando al cliente un duplicado como este:

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

y en el segundo caso, si la aplicación ascendente no establece una cookie, nginx lo enviará al navegador:

Set-Cookie; secure;

Esto es doble plusungood, por supuesto.

Creo que este problema debe solucionarse, ya que muchas personas lo han preguntado. En mi opinión, se necesita una directiva como esta:

proxy_cookie_set_flags * HttpOnly;
proxy_cookie_set_flags authentication secure HttpOnly;

pero, por desgracia, esto no existe actualmente :(

Larry
fuente
La ruta de las cookies realmente parece una buena solución. Creo que lo intentaré primero. Gracias por tu ayuda.
ST-DDT
1
Elevé una solicitud de función en el foro; ojalá el autor esté interesado en eso.
Franklin Yu
3

Intenta usar nginx_cookie_flag_module . Resolverá tu problema.

Descargo de responsabilidad: soy el autor del módulo.

Airis
fuente
3
¿Podría explicar cómo se configura y configura el módulo? El archivo README parece sugerir que requiere la reconstrucción de nginx, lo que podría no ser aceptable en muchas configuraciones.
Thomas Nyman
Sí, el uso de este módulo requiere la reconstrucción de Nginx. De lo contrario, no podría usar su directiva. Esto se aplica a todos los módulos de terceros. En muchos casos, la reconstrucción de nginx no lleva mucho tiempo.
Airis
La reconstrucción de @ThomasNyman se puede evitar pagando NGINX Plus, como se explica en las instrucciones de NGINX .
Franklin Yu
1
@Airis ¿Entonces tú eres el autor? Buen trabajo, amigo, pero mejor agregar un descargo de responsabilidad.
Franklin Yu
@Aris intentamos usar el módulo con la versión 1.17.1 de ngnix: alpine, pero enfrentamos los siguientes errores una vez que intentamos cargar los módulos en nginx.conf. 'module "/usr/local/nginx/modules/ngx_http_cookie_flag_filter_module.so" no es compatible con binarios'
Lokesh