Nginx Добавить безопасный флаг для файлов cookie с прокси-сервера

12

Mozilla только что выпустила новый инструмент для проверки конфигурации вашего сайта. observatory.mozilla.org

Но сканирование жалуется на куки-файлы (-10 баллов): сессионные куки-файлы установлены без флага Secure ...

К сожалению, служба, работающая за моим nginx, может установить безопасный заголовок, только если SSL заканчивается там напрямую, а не тогда, когда SSL завершается на nginx. Таким образом, флаг «Безопасный» не установлен на куки.

Можно ли как-то добавить к файлам cookie флаг безопасности с помощью nginx? Изменение местоположения / пути представляется возможным.

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
источник

Ответы:

11

Я знаю два способа сделать это, но ни один из них не хорош. Во-первых, просто злоупотребьте proxy_cookie_path следующим образом:

proxy_cookie_path / "/; secure";

Второе - использовать директиву more_set_headers из модуля Headers More следующим образом:

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;

но увы, этого в настоящее время не существует :(

Larry
источник
Путь к cookie действительно выглядит как хороший обходной путь. Я думаю, что я попробую это в первую очередь. Спасибо за вашу помощь.
ST-DDT
1
Я поднял запрос функции на форуме; Надеюсь, автор заинтересован в этом.
Франклин Ю
3

Попробуйте использовать nginx_cookie_flag_module . Это решит вашу проблему.

Отказ от ответственности: я являюсь автором модуля.

Airis
источник
3
Не могли бы вы рассказать о том, как модуль настроен и настроен. README, похоже, предполагает, что он требует перестройки nginx, что может быть неприемлемо во многих установках.
Томас Найман
Да, использование этого модуля требует перестройки Nginx. В противном случае вы не сможете использовать его директиву. Это относится ко всем сторонним модулям. Во многих случаях восстановление nginx не занимает много времени.
Airis
@ThomasNyman Восстановления можно избежать, заплатив за NGINX Plus, как объяснено в инструкции от NGINX .
Франклин Ю
1
@Airis Так ты автор? Отличная работа, приятель, но лучше добавить отказ от ответственности.
Франклин Ю
@ Aris мы пытались использовать модуль с версией ngnix 1.17.1: alpine, но мы сталкиваемся со следующими ошибками, когда пытаемся загрузить модули в nginx.conf. «Модуль» /usr/local/nginx/modules/ngx_http_cookie_flag_filter_module.so «не является двоично-совместимым»
Lokesh