Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Wlasny mechanizm sesji, problem z ciastkiem...
Zgredzik
post
Post #1





Grupa: Zarejestrowani
Postów: 8
Pomógł: 2
Dołączył: 10.06.2009

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


Czesc, robie wlasny mechanizm sesji i mam problem (IMG:http://forum.php.pl/style_emoticons/default/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 (IMG:http://forum.php.pl/style_emoticons/default/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...?(IMG:http://forum.php.pl/style_emoticons/default/exclamation.gif) ?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
Crozin
post
Post #2





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

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


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.
Go to the top of the page
+Quote Post
erix
post
Post #3





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




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.
Go to the top of the page
+Quote Post
Zgredzik
post
Post #4





Grupa: Zarejestrowani
Postów: 8
Pomógł: 2
Dołączył: 10.06.2009

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


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 (IMG:http://forum.php.pl/style_emoticons/default/sad.gif)
Go to the top of the page
+Quote Post
Fifi209
post
Post #5





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

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


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]
Go to the top of the page
+Quote Post
Zgredzik
post
Post #6





Grupa: Zarejestrowani
Postów: 8
Pomógł: 2
Dołączył: 10.06.2009

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


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...
Go to the top of the page
+Quote Post
erix
post
Post #7





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




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)? (IMG:http://forum.php.pl/style_emoticons/default/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.
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.12.2025 - 10:57