Trong nginx proxy ngược, làm cách nào để đặt cờ bảo mật cho cookie?


12

Tôi đang sử dụng nginx làm proxy ngược để phục vụ trang web chỉ có https. Vì vậy, tôi muốn các cookie cho trang web này được gắn cờ là an toàn. Nhưng máy chủ phụ trợ là một http nên nó sẽ không đặt cờ an toàn cho cookie của nó. Làm cách nào tôi có thể sửa đổi tiêu đề Set-Cookie để phản hồi để thêm cờ bảo mật?


Đã hỏi và trả lời trên SO. Xem SO cho ví dụ nginx cho Tomcat7: stackoverflow.com/questions/19916906/NH
Joseph Lust

1
Việc ghi đè như vậy hiện không thể thực hiện được, nhưng có một vấn đề / vé về proxy_cookie_secure: trac.nginx.org/nginx/ticket/368 Tuy nhiên nó chưa được thực hiện (và vấn đề đã cũ).
rugk

Mô-đun bên thứ ba này có thể giúp bạn.
Airis

Câu trả lời:


4

Bạn có thể yêu cầu proxy nginx của mình sửa đổi cookie được tạo bởi phụ trợ và đặt cờ bảo mật - để lấy cảm hứng, hãy xem Làm thế nào để viết lại phần tên miền của Set-Cookie trong proxy ngược nginx? .

Tuy nhiên, tôi tưởng tượng rằng lấy bất cứ thứ gì đang tạo cookie trên phần phụ trợ để đặt cờ bảo mật sẽ là một giải pháp tốt hơn. Làm thế nào bạn làm điều đó là một câu chuyện khác (hoặc câu hỏi :).


4
Nó có thể giúp bạn đặt X-Forwarded-Prototiêu đề và đảm bảo rằng nó được giải thích bởi ứng dụng của bạn. Đây là một kỹ thuật phổ biến và cũng cho phép các ứng dụng http / https hỗn hợp phản ứng đúng dựa trên giao thức.
Lukas

4

Tôi sử dụng mã cấu hình nginx sau:

# make cookie secure (case sensitive)
proxy_cookie_domain ~(?P<secure_domain>([-0-9a-z]+\.)?[-0-9a-z]+\.[a-z]+)$ "$secure_domain; secure";

Thay vì regex để làm cho điều này năng động, tất nhiên bạn có thể sử dụng FQDN.


Đây chỉ là phản hồi hoặc cả yêu cầu và phản hồi. Khi khách hàng gửi yêu cầu với bộ cờ bảo mật, nginx có tước yêu cầu đó để máy chủ web không phàn nàn không?
Tigran

Khách hàng không gửi lại cờ an toàn trong Cookietiêu đề.
r_3

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.