In einer Rails-App kann der Sitzungscookie einfach so eingestellt werden, dass er beim Senden über HTTPS das secure
-Cookie-Attribut enthält, um sicherzustellen, dass der Cookie nicht über eine Nicht-HTTP-Verbindung durchgesickert wird.
Wenn die Rails-App jedoch KEIN HTTPS, sondern nur HTTP verwendet, scheint es, dass das Cookie überhaupt nicht gesetzt wird.
Obwohl dies sinnvoll ist, gibt es in diesem Szenario einen separaten Front-End-Lastenausgleich, der für die Beendigung der SSL-Verbindung zuständig ist. Von der LB- zur Rails-App ist die Verbindung nur HTTP.
Wie kann ich erzwingen, dass in der Rails-App ein Cookie secure
gesetzt wird, auch wenn HTTPS nicht verwendet wird?
Sichere Cookies werden per Definition nicht über nicht sichere Verbindungen gesendet.
Das Beenden von SSL-Upstream ist durchaus üblich, aber Sie müssen bestimmte Header-Felder durchlassen, damit Rails das Richtige tun kann und kann.
Hier ist ein Dokument , das die Konfiguration in ziemlich gut erklärt Detail für Nginx. Suchen Sie nach "Set headers", um zu dem Abschnitt zu springen, der die spezifischen Header beschreibt, die Sie durchlaufen müssen.
Es gibt Sicherheitsüberlegungen, die diese Konfiguration verwenden, z. B. wenn das Gerät, das SSL beendet, sich nicht im selben sicheren LAN wie der Rails-Host befindet, dann besteht eine Sicherheitslücke.
Tags und Links security ruby-on-rails session-cookies