Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]"Przypomnij hasło"
Forum PHP.pl > Forum > Przedszkole
Raven1122
Witam, mam takie pytanie:

Jeżeli hashuje wyraz w taki sposób:

  1. md5(sha1(haslo));


I daje uzytkownikowi mozliwosc przywrocenia hasla, jak podac mu haslo "odhashowane"??

Jezeli nie ma takiej mozliwosci to prosze o podanie jakiegos przykladu algorytmu hashowania i jego odhashowywania, albo bynajmniej wyjasnic jak to robic poprzez własną sól ;]

Z góry dziękuje.
pedro84
Nie ma możliwości "odhashowania".

Zasada jest prosta: user chce zresetować hasło, ślesz mu maila z tokenem, wchodzi pod przesłany link, sprawdzasz token, jeśli się zgadza dajesz mu możliwość ustalenia nowego hasła.
ethann
Hm. Nie uważam to za rozsądne rozwiązanie.. Nie jest to w żaden sposób bezpieczne. Skoro można odhashować hasło to po co w takim razie trzymać je w ogóle w postaci zhashowanej. Chyba, że własny ciekawy algorytm obmyślisz jednak nie sądzę aby wyszedł bezpieczny. wink.gif

Zazwyczaj jest możliwość użycia funkcji która po potwierdzeniu drogą meilową pozwala na zmianę hasła. W żadnym poważniejszym serwisie nie spotkałem się z przypomnieniem hasła.

Algorytmy hashowania dwukierunkowe to np. Base64, ROT13 czy coś w tym stylu. Osobiście nie polecam do trzymania haseł ^^
pedro84
@ethann - Od kiedy można bezproblemowo odhashować sha1 czy md5?
ethann
Oj. Faktycznie zgubiłem początek.
Zgadza się @pedro, nie można tego odhashować, a algorytmy które można nie są dobrym rozwiązaniem, bo to w sumie prawie jak trzymanie ich w formie plain textu wink.gif
Raven1122
a token trzymam w bazie danych tak, i kazdy uzytkownik ma swoj unikalny, tak mysle
pedro84
Tak. Może być to też np. hash maila + salt - jak wolisz. Ja trzymam zawsze w bazie + sprawdzam czas żądania.
Raven1122
dziekuje za pomoc ;]
greycoffey
  1. md5(sha1($haslo));
- nie jest dobre, poczytaj w dziale PHP przyklejony temat o "n-hashowaniu".
Crozin
@pedro84: Akurat znalezienie kolizji dla MD5 to kwestia sekund na przeciętnym komputerze.
@ethann: Nie istnieje coś takiego jak hashowanie dwukierunkowe - w takim przypadku mówimy o szyfrowaniu i base64 w żadnym wypadku nie jest przedstawicielem funkcji szyfrującej. ROT13 formalnie co prawda szyfrem jest, ale obecnie (czyt.: od setek lat) to tylko przykład szyfru dla przedszkolaków. Normalne algorytmy szyfrujące to przykładowo DES czy Blowfish.
@Raven1122: Token generujesz sobie każdorazowo dla każdej próby odzyskania hasła dodatkowo ograniczając jego żywotność oraz dezaktywując go po wykorzystaniu.
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.