Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Jak to w końcu jest z tym http_refererem
gargamel
post
Post #1





Grupa: Zarejestrowani
Postów: 278
Pomógł: 35
Dołączył: 25.06.2010

Ostrzeżenie: (0%)
-----


Przekopałem trochę forum, ale nie znalazłem tego czego dokładnie szukałem...
Takie tylko linki...
http://forum.php.pl/index.php?showtopic=35422
http://forum.php.pl/index.php?showtopic=18535

Chodzi mi o to na ile można ufać zmiennej $_SERVER['HTTP_REFERER'].
Wykorzystuję ową zmienną, aby zabezpieczyć formularz logowania. Logowanie odbywa się dopiero gdy login i hasło zostało przesłane z określonej strony.
Tylko wszędzie czytam że http_referer nie jest godzien zaufania (IMG:style_emoticons/default/dry.gif)
Jak to jest? Czy można jakoś (i w jaki sposób ) zmienić jego wartość i podszyć się pod stronę z której się logujemy?

Ten post edytował gargamel 3.11.2010, 13:39:41
Go to the top of the page
+Quote Post
hind
post
Post #2





Grupa: Zarejestrowani
Postów: 142
Pomógł: 24
Dołączył: 30.03.2009
Skąd: Rokitno Szlacheckie

Ostrzeżenie: (0%)
-----


http_referer jest wysyłany przez przeglądarkę... przy użycie httpLiveHeaders (dodatek do FF) można bez problemu zmienić wartość tej zmiennej
Go to the top of the page
+Quote Post
tehaha
post
Post #3





Grupa: Zarejestrowani
Postów: 1 748
Pomógł: 388
Dołączył: 21.08.2009
Skąd: Gdynia

Ostrzeżenie: (0%)
-----


nie polegaj na tej zmiennej, lepiej ustaw sobie zmienną w sesji
Go to the top of the page
+Quote Post
Crozin
post
Post #4





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


Nagłówek REFERRER jest wysyłany przez klienta i może w nim być dosłownie wszystko.

Ochronę przed CRSF robi się nieco inaczej. Na stronie z formularzem generujesz unikalny token, zapisujesz go jako zmienną sesyjną, a do formularza dodajesz ukryte pole z tym tokenem. Na stronie odbierającej formularz sprawdzasz czy przesłany token jest taki sam jak ten z sesji.
Go to the top of the page
+Quote Post
gargamel
post
Post #5





Grupa: Zarejestrowani
Postów: 278
Pomógł: 35
Dołączył: 25.06.2010

Ostrzeżenie: (0%)
-----


No ok.
Tylko hmm... wyprowadźcie mnie z błędu, bo pewnie czegoś do końca nie łapie.
Mam powiedzmy 2 pliki:
index.php - z formularzem,
logowanie.php - skrypt sprawdzający przesłane dane i zapisujący do sesji to co trzeba.

Plik index.php tworzy token i zapisuje do w sesji. Ponadto ten sam token ląduje w ukrytym polu formularza.
Login hasło i token lecą do logowanie.php i tam jeśli przesłany token zgadza się z tym z sesji, następuje dalsza procedura logowania.
Tak to widzę, ale pewnie źle, bo:
Ktoś otwiera sobie index.php, zagląda w źródło i w ukrytym polu ma token jak na dłoni. W sesji jest on już ustawiony, więc można go wysłać razem z loginem i hasłem do logowanie.php skąd tylko chcemy...
Go to the top of the page
+Quote Post
Crozin
post
Post #6





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


Tak, jeżeli to Ty bezpośrednio wchodzisz na tę stronę (w tym momencie serwer generuje unikalny token *dla Ciebie*), kopiujesz sobie ów token i wysyłasz dane. Serwer nie ma technicznej możliwości sprawdzenia czy otrzymane żądanie zostało wygenerowane formularzem.

Ten token ma uniemożliwić ataki typu CRSF czyli coś na zasadzie: na mojej - złej - stronie wstawiam sobie formularz z action ustawionym na Twoją stronę. Klikając robisz nieświadomie jakąś czynność w innym serwisie (np. usuwasz swoje konto/zdjęcia, zakładasz durny wątek na forum).
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 24.08.2025 - 03:58