Wie setze ich im Nginx Reverse Proxy das sichere Flag für Cookies?

11

Ich verwende nginx als Reverse-Proxy, um eine Nur-https-Site bereitzustellen. Daher möchte ich, dass die Cookies für diese Website als sicher gekennzeichnet werden. Der Backend-Server ist jedoch ein http-Server, sodass das Sicherheitsflag für seine Cookies nicht gesetzt wird. Wie kann ich den Set-Cookie-Header ändern, um ein sicheres Flag hinzuzufügen?

Tianyi Cui
quelle
Gefragt und beantwortet auf SO. Siehe SO für Nginx-Beispiel für Tomcat7: stackoverflow.com/questions/19916906/…
Joseph Lust
1
Eine solche Überschreibung ist derzeit nicht möglich, es gibt jedoch ein Problem / Ticket zu proxy_cookie_secure: trac.nginx.org/nginx/ticket/368. Es ist jedoch noch nicht implementiert (und das Problem ist alt).
Rugk
Dieses Modul eines Drittanbieters kann Ihnen helfen.
Airis

Antworten:

4

Möglicherweise können Sie Ihren Nginx-Proxy dazu bringen, die vom Backend erstellten Cookies zu ändern und das sichere Flag zu setzen. Inspiration finden Sie unter So schreiben Sie den Domain-Teil von Set-Cookie in einen Nginx-Reverse-Proxy um. .

Ich würde mir jedoch vorstellen, dass es eine bessere Lösung ist, alles zu bekommen, was das Cookie im Backend erstellt, um das sichere Flag zu setzen. Wie du das machst, ist eine andere Geschichte (oder Frage :).

Jon Rhoades
quelle
4
Dies kann Ihnen helfen, den X-Forwarded-ProtoHeader festzulegen und sicherzustellen, dass er von Ihrer Anwendung interpretiert wird. Dies ist eine gängige Technik und ermöglicht es gemischten http / https-Anwendungen, basierend auf dem Protokoll richtig zu reagieren.
Lukas
4

Ich verwende den folgenden Nginx-Konfigurationscode:

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

Anstelle des regulären Ausdrucks, um dies dynamisch zu machen, können Sie natürlich den vollqualifizierten Domänennamen verwenden.

r_3
quelle
Ist dies nur auf Antwort oder sowohl auf Anfrage als auch auf Antwort. Wenn der Client eine Anfrage mit gesetztem Sicherheitsflag sendet, entfernt Nginx diese, damit sich der Webserver nicht beschwert?
Tigran
Clients senden das sichere Flag im CookieHeader nicht zurück.
r_3