2014-06-09 9 views
9

biegnę Apache 2.2.26:Dodaj Bezpieczne i HttpOnly Flagi na każdy zestaw-Cookie odpowiedź w Apache httpd

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

Ja próbuje użyć mod_headers edytować nagłówków Set-Cookie i dodać bezpieczny lub flagę httpOnly, ale nie działa wcale (nic nie robi, nie daje błędu HTTP 500).

Mogę użyć "modyfikuj" "dopisz", dyrektywy komendy Nagłówek bez problemu, po prostu nie edytuj. Nie wiem dlaczego ...

Próbowałem wiele kombinacji, ale to, co mam w moim .htaccess:

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" 

Jestem otwarty na wszelkie rozwiązania, które automatycznie doda flagi do każdej odpowiedzi typu Set-Cookie, bez konieczności edytowania kodu w aplikacji. Nie mam dostępu do instalowania dodatkowych elementów na serwerze WWW, ale serwer internetowy ma standardową bardzo długą listę modułów Apache znajdujących się na większości hostów internetowych.

+0

Mogłem * znalazłem odpowiedź, ale nie jestem pewien, o czym mówią: http://apache-http-server.18135.x6.nabble.com/Mark-cookies-as -secure-td5003557.html Plik PHP tworzy plik cookie, który może być skonfigurowany jako CGI, nie jestem pewien. – Doug

+0

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

+0

Widziałem to, ale problemem był Apache 2.2.3, a edycja została dodana w 2.2.4. Używam Apache 2.2.26 ... więc jeśli nie ma sposobu na usunięcie tej edycji, myślę, że będzie tam. Przypuszczam, że może jest to stara wersja mod_headerów, a nie stara wersja Apache? Będę musiał w to wepchnąć. – Doug

Odpowiedz

20

Dyrektywa Header edit biegnie przed aplikacja wywołuje reakcję, więc jeśli aplikacja jest produkujących nagłówek, który chcesz edytować, że nagłówek nie będzie jeszcze istnieć w czasie, gdy dyrektywa działa, i nie będzie nic do edycji.

Można to naprawić za pomocą Header always edit (która biegnie po aplikacja wywołuje odpowiedź) zamiast:

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

Przykładowy nagłówek, przed zastosowaniem dyrektywy:

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

To samo nagłówek po zastosowaniu dyrektywy:

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

Nie jestem pewien, co dokładnie mają zrobić dyrektywy w twoim pytaniu; to, co faktycznie uzyskuje się po zmianie na Header always edit (zakładając ten sam nagłówek Set-Cookie jak w moim przykładzie powyżej) to np.

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

Jeśli rozumiesz jak Wyrażenia regularne i wsteczne praca, to jest oczywiste, co się tam dzieje, ale prawdopodobnie nie jest to, co chcesz. Dyrektywa, którą podałem na początku tej odpowiedzi, powinna zadziałać, jeśli, jak mówisz, chcesz dodać flagę do każdego nagłówka Set-Cookie; jeśli twoje potrzeby są bardziej złożone i źle zrozumiałem, co próbujesz zrobić z tym wyszukiwaniem/zamianą, daj mi znać.

EDIT: W przypadku nie jest oczywiste: aby dodać zarówno flagi, można zmodyfikować dyrektywę tak:

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

... albo użyć dwóch dyrektyw:

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

Pierwsze podejście wydaje mi się bardziej sensowne, ale w dużej mierze zależy od gustu.

+0

Dziękuję! Wypróbowałem to i sprawiłem, że zadziałało. Wiedziałem, że musi to być coś prostego! Przy okazji, powód, dla którego miałem dwie linie, polegał na tym, by unikać dodawania httpOnly lub bezpiecznego, jeśli flaga już istniała bez jeszcze bardziej skomplikowanego RegEx. W każdym razie mogę poradzić sobie z wprowadzaniem tych poprawek. – Doug

Powiązane problemy