Jaki jest najlepszy sposób na wdrożenie "Zapamiętaj mnie" dla strony internetowej? [zamknięte]

zamknięte . To pytanie musi być bardziej skoncentrowane . Obecnie nie przyjmuje odpowiedzi.

chcesz poprawić to pytanie? Update the question so it edytując ten post.

Zamknięte 5 lat temu .

Popraw to pytanie

Chcę, aby moja strona miała pole wyboru, które użytkownicy mogą kliknąć, aby nie musieli się logować za każdym razem, gdy odwiedzają moją stronę. Wiem, że będę musiał przechowywać plik cookie na ich komputerze, aby zaimplementuj to, ale co powinno być zawarte w tym pliku cookie?

Czy istnieją typowe błędy, na które należy uważać, aby plik cookie nie zawierał luki w zabezpieczeniach, których można uniknąć, jednocześnie oferując funkcję "Zapamiętaj mnie"?

Author: Vort3x, 2008-10-28

4 answers

Ulepszona Najlepsza Praktyka Trwałych Plików Cookie Logowania

Możesz użyć opisanej tutaj strategii jako najlepszej praktyki (2006) lub zaktualizowanej strategii opisanej tutaj (2015):

  1. gdy użytkownik pomyślnie zaloguje się za pomocą Remember Me checked, oprócz standardowego pliku cookie do zarządzania sesją jest wydawany plik cookie logowania.
  2. plik cookie logowania zawiera identyfikator serii i token. Seria I token są nie do obejrzenia liczby losowe z odpowiednio dużej przestrzeni. Oba są przechowywane razem w tabeli bazy danych, token jest hashowany (sha256 jest w porządku).
  3. gdy niezalogowany użytkownik odwiedza witrynę i prezentuje plik cookie logowania, identyfikator serii jest wyszukiwany w bazie danych.
    1. Jeśli identyfikator serii jest obecny, a hash tokenu odpowiada hashowi dla tego identyfikatora serii, użytkownik jest uważany za uwierzytelniony . A nowy token jest generowany, nowy hash dla tokena jest przechowywany nad starym rekordem ,a nowy plik cookie logowania jest wydawany użytkownikowi (można ponownie użyć identyfikatora serii ).
    2. Jeśli seria jest obecna, ale token nie pasuje, zakłada się kradzież . Użytkownik otrzymuje silnie sformułowane Ostrzeżenie, a wszystkie zapamiętane sesje użytkownika są usuwane.
    3. Jeśli nazwa użytkownika i seria nie są obecne, plik cookie logowania jest ignorowane.

Takie podejście zapewnia dogłębną obronę. Jeśli komuś uda się przeciekać tabelę bazy danych, nie daje to atakującemu otwartych drzwi do podszywania się pod użytkowników.

 547
Author: splattne,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-05-01 11:34:36

Przechowują UserId i pamięć. Po zalogowaniu Z remember me zaznaczone wygeneruj nowy RememberMeToken (który unieważnia wszystkie inne maszyny, które są oznaczone remember me).

Gdy powrócą, sprawdź je za pomocą tokena remember me i upewnij się, że identyfikator użytkownika pasuje.

 10
Author: jonnii,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-10-28 21:14:25

Zapisałbym identyfikator użytkownika i token. Kiedy użytkownik wraca na stronę, porównaj te dwie informacje z czymś trwałym, takim jak wpis do bazy danych.

Jeśli chodzi o bezpieczeństwo, po prostu nie umieszczaj tam niczego, co pozwoli komuś zmodyfikować plik cookie, aby uzyskać dodatkowe korzyści. Na przykład nie przechowuj ich grup użytkowników ani hasła. W plikach cookie nie należy zapisywać żadnych zmian, które mogłyby obejść Twoje bezpieczeństwo.

 9
Author: dragonmantank,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-08-16 12:22:51

Sam badając uporczywe sesje odkryłem, że po prostu nie warto ryzykować bezpieczeństwa. Użyj go, jeśli absolutnie musisz, ale powinieneś rozważyć taką sesję tylko słabo uwierzytelnioną i wymusić nowe Logowanie dla wszystkiego, co może być wartościowe dla atakującego.

Powodem jest oczywiście to, że Twoje pliki cookie zawierające Twoją trwałą sesję są tak łatwo skradzione.

4 sposoby kradzieży ciasteczek (z komentarz Jens Roland na stronie @splattne na podstawie odpowiedzi):

    Nie jest to jednak możliwe, ponieważ nie jest to możliwe.]}
  1. poprzez bezpośredni dostęp do przeglądarki użytkownika (poprzez złośliwe oprogramowanie lub fizyczny dostęp do skrzynki)
  2. W przeciwieństwie do SQL Injection, SQL Injection może być dowolne.]}
  3. przez hackowanie XSS (lub podobny exploit po stronie klienta)
 4
Author: 2 revs, 2 users 91%Jarl,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-07-23 03:00:35