Nginx 프록시 서버에서 쿠키에 보안 플래그 추가 새로운 도구를 출시했습니다.

Mozilla는 웹 사이트 구성을 확인하기위한 새로운 도구를 출시했습니다. observatory.mozilla.org

그러나 스캔이 쿠키 (-10 포인트)에 대해 불평하고 있습니다 : 보안 플래그없이 설정된 세션 쿠키 …

불행히도 내 nginx 뒤에서 실행되는 서비스는 SSL이 nginx에서 종료 될 때가 아니라 SSL이 직접 종료되는 경우에만 보안 헤더를 설정할 수 있습니다. 따라서 쿠키에 “보안”플래그가 설정되어 있지 않습니다.

어떻게 든 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



답변

나는 이것을 수행하는 두 가지 방법을 알고 있습니다. 첫 번째는 다음과 같이 proxy_cookie_path를 남용하는 것입니다.

proxy_cookie_path / "/; secure";

두 번째는 Headers More 모듈 의 more_set_headers 지시문을 다음 과 같이 사용하는 것입니다.

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

이들은 맹목적으로 항목을 추가하기 때문에 문제가 발생할 수 있습니다. 예를 들어 업스트림이 보안 플래그를 설정하면 다음과 같이 클라이언트에 복제본을 전송합니다.

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

두 번째 경우에는 업스트림 앱이 쿠키를 설정하지 않으면 nginx가이를 브라우저로 보냅니다.

Set-Cookie; secure;

물론 이것은 doubleplusungood입니다.

많은 사람들이 질문 한대로이 문제를 해결해야한다고 생각합니다. 내 의견으로는 다음과 같은 지시문이 필요합니다.

proxy_cookie_set_flags * HttpOnly;
proxy_cookie_set_flags authentication secure HttpOnly;

그러나 아아, 이것은 현재 존재하지 않습니다 🙁


답변

nginx_cookie_flag_module 을 사용 하십시오 . 문제가 해결됩니다.

면책 조항 : 나는 모듈의 저자입니다.