Nginx는 프록시 서버의 쿠키에 보안 플래그를 추가합니다.

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

답변1

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

proxy_cookie_path / "/; secure";

두 번째는 more_set_headers 지시문을 사용하는 것입니다.더 많은 타이틀 다음과 같은 모듈:

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

두 방법 모두 맹목적으로 항목을 추가하기 때문에 문제가 발생합니다. 예를 들어, 업스트림이 설정되면안전한다음과 같이 클라이언트에게 사본을 보내게 될 것이라고 표시하세요.

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

두 번째 경우, 업스트림 애플리케이션이 쿠키를 설정하지 않으면 nginx는 쿠키를 브라우저로 보냅니다.

Set-Cookie; secure;

물론 이는 이중으로 불리하다.

이 질문은 많은 분들이 문의하셨기 때문에 해결이 필요하다고 생각합니다. 다음과 같은 지시어가 필요한 것 같습니다.

proxy_cookie_set_flags * HttpOnly;
proxy_cookie_set_flags authentication secure HttpOnly;

하지만 아쉽게도 아직 존재하지 않습니다. :(

답변2

사용해 보세요nginx_cookie_flag_module. 그것은 당신의 문제를 해결할 것입니다.

부인 성명:나는 이 모듈의 저자입니다.

관련 정보