![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 544 Pomógł: 5 Dołączył: 18.08.2009 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Zrobiłem zapamiętywanie logowania na swojej stronie. Chciałbym się dowiedzieć czy jest bezpieczne. Po prawidłowym zalogowaniu dodaje Cookie z ID oraz do drugiego Cookie o wartości losowego ciągu znaków który jest przyporządkowany do każdego użytkownika (zapisane w bazie). Przy wejściu na stronę porównuję:
Czy jest to bezpieczne wyjście? Po wylogowaniu Cookie oczywiście się usuwa. Bo gdy np. ktoś sobie zmieni nr ID w cookie to musi jeszcze znać ciąg znaków, jeżeli zmieni na jakiś dziwny to mu tego nie uzna. Teoretycznie jest ok chyba ![]() -------------------- |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 2 592 Pomógł: 445 Dołączył: 12.03.2007 Ostrzeżenie: (0%) ![]() ![]() |
A po co Ci 2 zmienne w cookie? Możesz przecież zrobić sha1(id+username+pass) i później to porównywać z pobranym z bazy.
-------------------- |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 544 Pomógł: 5 Dołączył: 18.08.2009 Ostrzeżenie: (0%) ![]() ![]() |
Chodzi o to, żeby trzymać np. 12+nazwa+123123123123 i potem to rozdzielić przez explode i porównać? Możesz rozwinąć?
Ten post edytował deha21 16.08.2010, 22:30:36 -------------------- |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 46 Pomógł: 0 Dołączył: 18.07.2010 Ostrzeżenie: (0%) ![]() ![]() |
Ja u siebie rozwiązałem to w następujący sposób.
Gdy user loguje się na konto zapamiętuję w bazie danych informacje o browserze, systemie i wtyczkach, generuję także własny identyfikator sesji tworzony na podstawie ustalonego przeze mnie algorytmu i od razu go koduję md5. Następnie w ciastku zapisuję identyfikator usera, zakodowane md5 informacje o browserze i zakodowany identyfikator sesji, ciastko ma ważność 14 dni. Po np. restarcie komputera i ponownym wejściu na moją stronę odpowiednia funkcja sprawdza zapisane ciastka, jeśli wszystko się zgadza następuje automatyczne logowanie, jeśli coś się nie zgadza user zostaje wylogowany tj. informacje w bazie nadpisane randem a ciastka zniszczone. Bezpieczeństwo dodatkowo zwiększyłem tym, że identyfikator sesji jest zmienny tj. osoba poruszając się po stronie generuje nowe identyfikatory w ramach swojej sesji, tak więc kradzież ciastek nic nie da... a nawet gdyby to haker ma tylko "jeden strzał" zanim skradzione ciastko zostanie zniszczone, informacje o ciastku w bazie nadpisane a właściciel konta poinformowany o tym zdarzeniu ![]() Ten post edytował patrix007 16.08.2010, 22:50:31 |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 544 Pomógł: 5 Dołączył: 18.08.2009 Ostrzeżenie: (0%) ![]() ![]() |
No to widzę, że ty masz już bardziej zaawansowane logowanie
![]() ![]() -------------------- |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 2 958 Pomógł: 574 Dołączył: 23.09.2008 Skąd: wiesz, że tu jestem? Ostrzeżenie: (0%) ![]() ![]() |
Ściągnij sobie IPB i zobacz jak tam jest rozwiązany problem z zabezpieczeniem ciasteczek( cookie stronghold ).
patrix007: ![]() Ten post edytował CuteOne 17.08.2010, 08:28:56 |
|
|
![]()
Post
#7
|
|
![]() Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D ![]() |
Patrix... a co się dzieje gdy user ma więcej niż jednego browsera w akcji? Ja notorycznie żongluję 4 przeglądarkami (najnowsze wersje stabilne, nie-bety: IE, Fx, Opery i Chrome) i za każdym razem przy ciastkach by mnie wywalało
![]() -------------------- Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
|
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 544 Pomógł: 5 Dołączył: 18.08.2009 Ostrzeżenie: (0%) ![]() ![]() |
Czy sposób vokiela żeby mieszać dane usera i szyfrować a potem porównywać z danymi z bazy jest dobry? No i pytanie czy ten mój jest w miarę bezpieczny żeby go przetrzymać aż do ulepszenia na coś mocniejszego jeśli trzeba?
-------------------- |
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 2 592 Pomógł: 445 Dołączył: 12.03.2007 Ostrzeżenie: (0%) ![]() ![]() |
Ja zapisuję w ciasteczku hash takich danych, po których można zrobić ponowne logowanie. Czyli, jeśli normalnie do logowania używam, załóżmy takiej kombinacji:
Teraz po zapisaniu $login_string do ciasteczka, przy ponownym wejściu można zrobić zwykłe logowanie jeśli odpowiednie ciasteczko istnieje. Oczywiście dobrze jest zapisać w bazie czy dany użytkownik ma włączone autologowanie. -------------------- |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 46 Pomógł: 0 Dołączył: 18.07.2010 Ostrzeżenie: (0%) ![]() ![]() |
Patrix... a co się dzieje gdy user ma więcej niż jednego browsera w akcji? (...) Wtedy Cię wyloguje, nie przeoczyłem tego faktu - taki cel jest zamierzony oczywiście. Większość ludzi używa jednej przeglądarki i nie przełącza się między innymi zbyt często. Łatwiej wytłumaczyć komuś, dlaczego go wyrzuca ze strony (aby się dostosował) niż dlaczego ktoś inny zalogował się na jego konto ![]() Chętnie bym przeczytał jakie rozwiązania stosują inni w swoich skryptach (na pewno usłyszałbym o wielu lepszych rozwiązaniach), niektórzy logują nawet IP ale ja uznałem, że to byłoby już zbyt drastyczne zwłaszcza jak ktoś ma zmienny adres. patrix007: ![]() Prawdę mówiąc przy każdej operacji to się nie dzieje, byłoby to zbyt obciążające ale tak w miarę często. 30 minut to raczej nikt w moim systemie nie siedzi ![]() |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 14.08.2025 - 02:07 |