Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Session hijacking a $_SESION
Grandalf00
post
Post #1





Grupa: Zarejestrowani
Postów: 44
Pomógł: 0
Dołączył: 23.01.2016

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


Witajcie! Od pewnego czasu bawie się php, napisałem sobie apke do budżetu domowego i w między czasie pojawiła się kwestia bezpieczeństwa, a konkretnie - session hijacking.

Na wielu stronach, forach i w tutkach proponuje się np pobierać User-Agent i porównywać, a nawet są pomysły z adresem IP. Jednak nawet te zabiegi są mało warte dla "chcącego" (IMG:style_emoticons/default/smile.gif) Przeglądarki można użyć tej samej, a czytałem, że IP też można sfałszować (oczywiście musimy znać adres naszej ofiary). Wszystkie inne metody jak np ustawianie zmiennych w tablicy $_SESSION nie mają żadnego sensu.

Czy naprawdę nie ma innych metod ochrony przez wejście osobnika, który wykradł PHPSESSID? Mówie o sytuacji bez SSL i o takiej rozmawiajmy (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
KsaR
post
Post #2





Grupa: Zarejestrowani
Postów: 520
Pomógł: 102
Dołączył: 15.07.2014
Skąd: NULL

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


1. Dodaj do ciasteczek flagę httpOnly.
Np dla sesji możesz tak:
  1. ini_set('session.cookie_httponly', true);


2. Możesz w sesji stworzyć np. Hash w ktorym będzie:
  1. $_SERVER['HTTP_USER_AGENT'].$_SERVER['HTTP_ACCEPT_LANGUAGE'].$_SERVER['HTTP_ACCEPT_CHARSET'];

I w razie gdyby się nie zgadzał możesz poprosić o ponowne zalogowanie itp, lub skasować sesję.
Go to the top of the page
+Quote Post
Grandalf00
post
Post #3





Grupa: Zarejestrowani
Postów: 44
Pomógł: 0
Dołączył: 23.01.2016

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


Cytat(KsaR @ 5.06.2016, 17:12:51 ) *
1. Dodaj do ciasteczek flagę httpOnly.
Np dla sesji możesz tak:
  1. ini_set('session.cookie_httponly', true);


Tak, czytałem o tym i mam to włączone z poziomu php.ini.

Cytat(KsaR @ 5.06.2016, 17:12:51 ) *
2. Możesz w sesji stworzyć np. Hash w ktorym będzie:
  1. $_SERVER['HTTP_USER_AGENT'].$_SERVER['HTTP_ACCEPT_LANGUAGE'].$_SERVER['HTTP_ACCEPT_CHARSET'];

I w razie gdyby się nie zgadzał możesz poprosić o ponowne zalogowanie itp, lub skasować sesję.


No tak, coś można z tym kombinować + nawet User-Agent. Tylko teraz nasuwa się taka kwestia - czy w każdym zapytaniu ta dane się znajdą? Z tego co wiem, to wymagany jest tylko Host do prawidłowego zapytania.

A może zrobić takie coś: porównywać jakieś losowo generowany klucz zapisywany w dwóch lokalizacja na serwerze? Tylko jak go skorelować z sessionid?

Ekspertem nie jestem, ale wydaje mi się, że nie ma 100% metody na blokadę wejścia przez skradzione PHPSESSID, więc chyba pozostaje tylko utrudniać 1. Odczytanie ID (po stronie klienta nie mamy za dużego pola do popisu) 2. wejście do aplikacji przez przejęcie sesji.
Go to the top of the page
+Quote Post
valvadis
post
Post #4





Grupa: Zarejestrowani
Postów: 7
Pomógł: 1
Dołączył: 7.12.2014

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


Dobrym zabezpieczeniem będzie zablokować możliwość wielu sesji dla jednego użytkownika, a do tego ustawić krótki czas życia sesji.

Można też zastosować protokół HTTPS.
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: 23.08.2025 - 23:08