Nginx Thêm cờ bảo mật vào cookie từ máy chủ ủy quyền


12

Mozilla vừa phát hành một công cụ mới để kiểm tra cấu hình trang web của bạn. đài quan sát.mozilla.org

Nhưng quá trình quét đang phàn nàn về Cookies (-10 điểm): Cookie phiên được đặt mà không có cờ Bảo mật ...

Thật không may, dịch vụ chạy phía sau nginx của tôi chỉ có thể đặt tiêu đề an toàn nếu SSL chấm dứt trực tiếp ở đó chứ không phải khi SSL chấm dứt trên nginx. Do đó, cờ "Bảo mật" không được đặt trên cookie.

Có thể gắn cờ "an toàn" vào cookie bằng cách nào đó bằng nginx không? Sửa đổi vị trí / đường dẫn dường như là có thể.

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

Câu trả lời:


11

Tôi biết hai cách để sắp xếp làm điều này, cả hai đều không tuyệt vời. Đầu tiên là chỉ lạm dụng proxy_cookie_path như thế này:

proxy_cookie_path / "/; secure";

Thứ hai là sử dụng chỉ thị more_set_headers từ mô-đun Headers More như thế này:

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

Cả hai đều có thể giới thiệu các vấn đề vì họ mù quáng thêm các mục. Ví dụ: nếu ngược dòng đặt cờ bảo mật, bạn sẽ kết thúc việc gửi cho khách hàng một bản sao như thế này:

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

và trong trường hợp thứ hai nếu ứng dụng ngược dòng không đặt cookie thì nginx sẽ gửi cái này đến trình duyệt:

Set-Cookie; secure;

Đây là doubleplusungood, tất nhiên.

Tôi nghĩ vấn đề này cần được khắc phục vì nhiều người đã hỏi về nó. Theo tôi một chỉ thị là cần thiết một cái gì đó như thế này:

proxy_cookie_set_flags * HttpOnly;
proxy_cookie_set_flags authentication secure HttpOnly;

nhưng than ôi, điều này hiện không tồn tại :(


Đường dẫn cookie thực sự trông giống như một cách giải quyết tốt đẹp. Tôi nghĩ rằng tôi sẽ thử nó đầu tiên. Cảm ơn bạn đã giúp đỡ.
ST-DDT

1
Tôi đưa ra một yêu cầu tính năng trong diễn đàn; hy vọng tác giả quan tâm đến điều đó.
Franklin Yu

3

Hãy thử sử dụng nginx_cookie_flag_module . Nó sẽ giải quyết vấn đề của bạn.

Tuyên bố miễn trừ trách nhiệm: Tôi là tác giả của mô-đun.


3
Bạn có thể giải thích cách mô-đun được thiết lập và cấu hình. README dường như đề nghị rằng nó yêu cầu xây dựng lại nginx, điều này có thể không được chấp nhận trong nhiều thiết lập.
Thomas Nyman

Có, việc sử dụng mô-đun này đòi hỏi phải xây dựng lại Nginx. Nếu không, bạn không thể sử dụng nó. Điều này áp dụng cho tất cả các mô-đun của bên thứ ba. Trong nhiều trường hợp, việc xây dựng lại nginx không mất nhiều thời gian.
Airis

@ThomasNyman Việc xây dựng lại có thể tránh được bằng cách trả tiền cho NGINX Plus, như được giải thích trong hướng dẫn từ NGINX .
Franklin Yu

1
@Airis Vậy bạn là tác giả? Công việc tuyệt vời, bạn đời, nhưng tốt hơn để thêm từ chối trách nhiệm.
Franklin Yu

@Aris, chúng tôi đã cố gắng sử dụng mô-đun với phiên bản 1.17.1 của ngnix: alpine, nhưng chúng tôi gặp phải các lỗi sau khi cố gắng tải các mô-đun vào nginx.conf. 'mô-đun "/usr/local/nginx/modules/ngx_http_cookie_flag_filter_module.so" không tương thích nhị phân'
Lokesh
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.