![]() |
![]() ![]() |
![]() |
![]()
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) |
|
|
![]()
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: 2. Możesz w sesji stworzyć np. Hash w ktorym będzie:
I w razie gdyby się nie zgadzał możesz poprosić o ponowne zalogowanie itp, lub skasować sesję. |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 44 Pomógł: 0 Dołączył: 23.01.2016 Ostrzeżenie: (0%) ![]() ![]() |
1. Dodaj do ciasteczek flagę httpOnly. Np dla sesji możesz tak: Tak, czytałem o tym i mam to włączone z poziomu php.ini. 2. Możesz w sesji stworzyć np. Hash w ktorym będzie:
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. |
|
|
![]()
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. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 23.08.2025 - 23:08 |