2014-06-09 16 views
9

Ich bin mit Apache 2.2.26:hinzufügen Sichere und Httponly Flags auf jedes Set-Cookie-Antwort in Apache

Server version: Apache/2.2.26 (Unix) 
Server built: Jan 17 2014 12:24:49 
Cpanel::Easy::Apache v3.22.30 rev9999 +cloudlinux 

Ich versuche mod_headers zu verwenden Set-Cookie-Header zu bearbeiten und fügen Sie den sicheren oder httpOnly Flag, aber es funktioniert überhaupt nicht (tut nichts, gibt HTTP 500 Fehler nicht).

Ich kann die "ändern" "append", Direktiven des Header-Befehls ohne ein Problem, nur nicht die Bearbeitung. Ich weiß nicht, warum ...

ich viele Kombinationen ausprobiert habe, aber das ist, was ich in meinem .htaccess haben:

Header edit Set-Cookie "(.)([Hh][Tt][Tt][Pp][Oo][Nn][Ll][Yy])?(.)" "$1$2 ;HTTPOnly" 
Header edit Set-Cookie "(.)([Ss][Ee][Cc][Uu][Rr][Ee])?(.)" "$1$2 ;Secure" 

Ich bin offen für jede Lösung, die die Fahnen automatisch hinzufügen wird zu jeder Set-Cookie-Antwort, ohne dass der Code in der Anwendung bearbeitet werden muss. Ich habe keinen Zugang, um zusätzliche Elemente auf dem Webserver zu installieren, aber der Webserver hat die Standard-Liste der Apache-Module, die auf den meisten Webhosts zu finden ist.

+0

Ich * könnte * die Antwort gefunden haben, aber ich bin nicht wirklich sicher, wovon sie reden: http://apache-http-server.18135.x6.nabble.com/Mark-cookies-as -secure-td5003557.html Eine PHP-Datei erstellt den Cookie, der als CGI konfiguriert werden kann, bin ich mir nicht sicher. – Doug

+0

http://serverfault.com/questions/235713/apache-mod-header-rule-to-change-all-cookies-to-secure? –

+0

Ich sah das, aber das Problem dort war Apache 2.2.3, und die Änderung wurde in 2.2.4 hinzugefügt. Ich betreibe Apache 2.2.26 ... also, es sei denn, es gibt eine Möglichkeit, das Edit zu entfernen, würde ich denken, dass es da wäre. Ich nehme an, es ist vielleicht eine alte Version von mod_headers und nicht eine alte Version von Apache? Ich muss da reinstecken. – Doug

Antwort

20

Die Header edit Richtlinie läuft vor Ihre Anwendung eine Antwort erzeugt, so dass, wenn die Anwendung die Header produzieren Sie bearbeiten möchten, wird dieser Header noch nicht zu dem Zeitpunkt existiert die Richtlinie ausgeführt wird, und es wird nichts sein um es zu bearbeiten.

Sie können dieses Problem beheben, indem Header always edit mit (was läuft nach Ihre Anwendung eine Antwort erzeugt) statt:

Header always edit Set-Cookie (.*) "$1; HTTPOnly" 

Ein Beispiel Header, vor der Anwendung der Richtlinie:

Set-Cookie: foo=bar; domain=.example.com; path=/ 

der gleichen Header nach Anwendung der Richtlinie:

Ich bin mir nicht sicher, was die Direktiven in Ihrer Frage genau tun sollen; was sie tatsächlich Ergebnis, wenn geändert zu Header always edit (vorausgesetzt, die gleiche Set-Cookie Header wie in meinem Beispiel oben) ist z.B.

Set-Cookie: f ;HTTPOnlyo=bar; domain=.example.com; path=/ 

Wenn Sie verstehen, wie reguläre Ausdrücke und Rückreferenzierungen Arbeit, es ist offensichtlich, was da passiert ist, aber es ist vermutlich nicht das, was Sie wollen. Die Anweisung, die ich oben in dieser Antwort angegeben habe, sollte für Sie funktionieren, wenn Sie, wie Sie sagen, das Flag zu jedem Set-Cookie Header hinzufügen möchten; Wenn Ihre Anforderungen komplexer sind und ich missverstanden habe, was Sie mit dieser Suche/Ersetzung versuchen, lassen Sie es mich wissen.

EDIT: Falls es nicht auf der Hand: beide Flaggen hinzufügen möchten, können Sie entweder ändern, die Richtlinie wie folgt:

Header always edit Set-Cookie (.*) "$1; HTTPOnly; Secure" 

... oder zwei Richtlinien verwenden:

Header always edit Set-Cookie (.*) "$1; HTTPOnly" 
Header always edit Set-Cookie (.*) "$1; Secure" 

Der erste Ansatz erscheint mir vernünftiger, aber es ist weitgehend eine Frage des Geschmacks.

+0

Danke! Ich habe das getestet und es zur Arbeit gebracht. Ich wusste, dass es etwas Einfaches sein musste! Übrigens, der Grund, warum ich zwei Zeilen hatte, war, das Hinzufügen von httpOnly oder secure zu vermeiden, wenn das Flag bereits ohne eine noch kompliziertere RegEx existierte. In jedem Fall kann ich diese Anpassungen vornehmen. – Doug