• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

PHP - bezpieczeństwo sesji

VPS Starter Arubacloud
0 głosów
468 wizyt
pytanie zadane 26 marca 2019 w PHP przez MrxCI Dyskutant (8,260 p.)
Witam, programuje w czystym PHP bez żadnych frameworków, chce wstawić serwis z możliwością tworzenia kont, ale zanim to zrobie chciałbym go odpowiednio zabezpieczyć.

 

Posiada coś typu fingerprint, który jest wysyłany do każdego zapytania i musi być zgodny z odciskiem utworzonym w sesji.

Sesja posiada sprawdzanie User_agent przeglądarki oraz adres ip, jeśli których z nich się różni użytkownik zostaje wylogowany.

i tu pojawia się pierwszy problem, niektórzy mają zmienne ip i zostają wylogowani nawet kilka razy w ciągu dnia, natomiast autoryzacja po wyłączeniu sprawdzenia ip tylko polegająca na sprawdzeniu user_agenta użytkownika i ew. wylogowanie go gdy się nie zgadza jest według mnie bardzo niebezpieczna.

 

Drugi problem jest taki że nawet randomowe strony schronisk pisane na cms w ciasteczkach mają ich po kilka, _gat _auth itd. moja ma tylko PHPSESSID + randomowe znaki i nie wygląda mi to na bezpieczne.

 

Jak to wszystko znacznie lepiej zabeczpieczyć jeśli chodzi o sesje?
komentarz 26 marca 2019 przez adrian17 Ekspert (346,900 p.)

Nie mam teraz czasu na pełną odpowiedź, ale...

Posiada coś typu fingerprint, który jest wysyłany do każdego zapytania i musi być zgodny z odciskiem utworzonym w sesji.

...czyli ciastko? AFAIK dokładnie tak działają sesje, z automatu.

_gat

to ciastko google analytics. Nie ma żadnego związku z bezpieczeństwem.

komentarz 26 marca 2019 przez MrxCI Dyskutant (8,260 p.)
Chodzi mi o bardziej w tym pierwszym cytowaniu o dołązanie odcisku do każdego zapytania, aby ktoś zalogowany jako np. nie dostał fake linku, który po otworzeniu przez niego mając uprawnienia administratora nie wykonał akcji, ponieważ dla każdego konta jest dołączany odcisk, wtedy atakujący podsyłający link musiałby znać odcisk sesji administratora, a to jest raczej nie do odkrycia, ten sposób według mnie bardziej kieruje bezpieczeństwo na sesje, które właśnie chce zabezpieczyć lepiej niż dotychczas.

_gat to rzeczywiście ciasteczko od google, mój błąd.
komentarz 26 marca 2019 przez adrian17 Ekspert (346,900 p.)

aby ktoś zalogowany jako np. nie dostał fake linku, który po otworzeniu przez niego mając uprawnienia administratora nie wykonał akcji

To też ma standardowe rozwiązanie - weryfikację, że żądanie akcji pochodzi z poprawnego źródła. Poczytaj o CSRF i tokenach CSRF.

Na przykład https://stackoverflow.com/a/33829607/2468469 https://stackoverflow.com/q/6287903/2468469 etc

komentarz 26 marca 2019 przez MrxCI Dyskutant (8,260 p.)
Przykładowe rozwiązanie z tokenem to dokładnie to samo tylko u mnie nazwane fingerprintem, z tym wyjątkiem że token jest generowany na każde żądanie inny, u mnie "token" jest generowany na sesje i dołączany do każdego zapytania, w przypadku błędnego wyświetla informacje o problemie, w przypadku kilku nieprawidłowych tokenów w krótkim czasie niszczy sesje (ew. blokuje ip, myślę nad tym jeszcze)
komentarz 26 marca 2019 przez adrian17 Ekspert (346,900 p.)

Jeden token per sesja to wciąż jest poprawna implementacja CSRF i wciąż spełnia swoje zadanie (może ewentualnie być trochę bardziej podatny na inne ataki na stronę). Patrz na przykład:

https://security.stackexchange.com/questions/22903/why-refresh-csrf-token-per-form-request

Natomiast wciąż silnie rekomenduję korzystać ze sprawdzonych, standardowych rozwiązań, zamiast wymyślać własne.

przypadku kilku nieprawidłowych tokenów w krótkim czasie niszczy sesje (ew. blokuje ip, myślę nad tym jeszcze)

IMO Jeśli atak CSRF jest niemożliwy dzieki zabezpieczeniom, nie ma sensu dodatkowo "karać" użytkownika który kliknął na złośliwy link.

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

0 głosów
1 odpowiedź 195 wizyt
pytanie zadane 24 marca 2021 w JavaScript przez Jakub 0 Pasjonat (23,120 p.)
0 głosów
1 odpowiedź 238 wizyt
pytanie zadane 1 lutego 2021 w PHP przez _Pita_ Stary wyjadacz (11,410 p.)
0 głosów
2 odpowiedzi 1,389 wizyt
pytanie zadane 3 września 2015 w PHP przez Benek Szeryf (91,210 p.)

92,775 zapytań

141,703 odpowiedzi

320,556 komentarzy

62,109 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...