Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Wlasny mechanizm sesji
Forum PHP.pl > Forum > Przedszkole
Zgredzik
Czesc, robie wlasny mechanizm sesji i mam problem smile.gif

Dokladnie chodzi o informacje przechowywane w ciasku, wiec zacznijmy od poczatku... Sesje obejmuja tylko uzytkownikow zalogowanych... W ciastku planowalem przechowywac ID uzytkownika z bazy oraz hash jego IP+odpowiednie dosolonie, ciastko takie ma dosc ktorki termin i nikt z tego ciastka raczej nie skorzysta z pod innego adresu IP. Problem polega na tym ze jesli wprowadze opcje "zaloguj automatycznie/zapamietaj mnie" to w erze dynamicznego adresu IP okres zycia takiego ciastka zamiast 7dni wyniesie 24h - czyli do puki nie zrestartuje sie np taki modem Neostrady - wtedy adres IP zostaje zmieniony a podczas porownywania hashy mamy FALSE smile.gif

Pytanie: w jaki sposob zapisac informacje w ciastku uwzgledniajac jego dlugi termin waznosci (do autologowania) tak aby ktos kto wykradnie ciastko Kowalskiego nie mogl z niego skorzystac...

Hm tak sobie analizowalem CMS Fusion i oni cale ciastko zrobili w sposob...
w ciastku jest hash MD5 hasla zas w bazie danych zostaje przechowywane to samo haslo podwojnie hashowane za pomoca MD5. Jaki sens?
Wiec? Osoba majaca dostep do ciastka kowalskiego moze wejsc na jego konto z innego komputera za posrednictwem tego wlasnie ciastka...?exclamation.gif?
Crozin
No to już wiemy, że CMS Fusion to...

Ciastko sesji i ciastko automatycznego logowania to dwie inne sprawy, jednak w obu przypadkach: ciąg danych powinien być maksymalnie losowy (pseudolosowy), możesz generować to od chociażby
  1. <?php
  2. md5(uniqid(mt_rand(), true)))
  3. ?>

W przypadku pierwszego ciastka przy porównywaniu bierz pod uwagę wartość z ciastka + IP + ewentualnie ciąg identyfikujący przeglądarkę. Przy każdym przeładowaniu strony regeneruj ciastko.
W drugim ciastku możesz dodać jeszcze ID użytkownika.
erix
Cytat
+ IP +

Wtedy to będzie pozbawione sensu...

Owszem, identyfikator przeglądarki jak najbardziej (w końcu to jej ciasteczkowy potwór dał prezent), ale IP + ADSL = funkcja bezużyeczna...

Cytat
W drugim ciastku możesz dodać jeszcze ID użytkownika.

Liczbę ciastek trzeba ograniczać, gdyż są doklejane do każdego żądania. Wystarczy odpowiedni identyfikator powiązany z danymi sesyjnymi zapisanymi w bazie i porównywanie przy każdym wywołaniu.
Zgredzik
No tak ale nadal nie ma dobrego rozwiazania aby Nowobogacki nie mogl uzywac ciastka Kowalskiego... Mysle ze w zwyklym ciastku sesyjnym dobrze jednak przechowywac IP wtedy ciastko moglo by zyc 24h. $_SERVER['HTTP_USER_AGENT']; to raczej nie jest sposob na identyfikacje, biorac pod uwage ze Polacy za zaFirefoxowani... Po za tym czy generowanie hasha tak dlugiej informacji nie bedzie obciazac servera w przypadku wielu uzytkownikow?

Wiec tu pojawia sie kolejne pytanie - czym hashowac... najbezpieczniej sha1 - jednak czy nie pokusic sie w tym przypadku o md4 ktory jest najszybszym i mniej bezpiecznym od md5 algorytmem kryptograficznym? Hasla + sol w bazie hashuje sha1... ale ta subtelna roznica znakow 40 a 32 jednak - sklania mnie do zaoszczedzenia miejsca uzywajac md5 sad.gif
Fifi209
Rozumiem, że projekt z założenia ma obsługiwać dziesiątki tysięcy klientów dziennie?
"Oszczędzać" - przy dzisiejszych technologiach (sprzęt) nie ma na czym. [na 8 znakach? 8 znaków = 8 bajtów]
Zgredzik
Cytat(fifi209 @ 10.06.2009, 15:28:10 ) *
Rozumiem, że projekt z założenia ma obsługiwać dziesiątki tysięcy klientów dziennie?
"Oszczędzać" - przy dzisiejszych technologiach (sprzęt) nie ma na czym. [na 8 znakach? 8 znaków = 8 bajtów]

Nie oczywiscie ze nie, portal nigdy nie zdobedzie popularnosci takiej jak np dobreprogramy czy inne tego typu serwisy, ale dlaczego by nie oszczedzac?
Jesli kazdy bedzie rozrzutny to spotka nas waskie gardlo... Po cos ta optymalizacje - szeroko rozumiana - wymyslono...
erix
Cytat
"Oszczędzać" - przy dzisiejszych technologiach (sprzęt) nie ma na czym. [na 8 znakach? 8 znaków = 8 bajtów]

To powiedz, dlaczego większe serwisy wydzielają osobne (sub)domeny na pliki niezwiązane z kontem użytkownika (obrazki, skrypty, etc)? snitch.gif

Cytat
$_SERVER['HTTP_USER_AGENT']; to raczej nie jest sposob na identyfikacje, biorac pod uwage ze Polacy za zaFirefoxowani...

Wiesz, ale nie wszyscy muszą używać tego samego buildu. A jeśli już tak bardzo zależy Ci na bezpieczeństwie, to posłuż się detekcją rozdzielczości + listą wtyczek dla danej przeglądarki.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.