![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 48 Pomógł: 0 Dołączył: 24.08.2009 Ostrzeżenie: (10%) ![]() ![]() |
Witam,
chcę dodać do tego istniejącego kodu, przypomnienie hasła, gdy hasło będzie kodowane w bazie. Skrypt wysyła na email zapomniane hasło z bazy w formie jawnej, a jak tutaj dodać, jeśli użytkownik wyśle formularz przypomnienia hasła to: generuje losowe hasło, następnie hasło haszuje w md5 i zapisuje w bazie. Hasło to losowe(ale hasło przed z haszowaniem) wysyła na email, użytkownik może już się zalogować przez nowe hasło.
wiem, że trzeba użyć funkcji do generowania jakieś ciągu, UPDATE do bazy itd. tylko nie potrafię tego dołączyć do istniejącego kodu php. Z góry dzięki za pomoc Pozdrawiam |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 2 592 Pomógł: 445 Dołączył: 12.03.2007 Ostrzeżenie: (0%) ![]() ![]() |
Skrypt wysyła na email zapomniane hasło z bazy w formie jawnej, a jak tutaj dodać, jeśli użytkownik wyśle formularz przypomnienia hasła to: generuje losowe hasło, następnie hasło haszuje w md5 i zapisuje w bazie. Hasło to losowe(ale hasło przed z haszowaniem) wysyła na email, użytkownik może już się zalogować przez nowe hasło. Taki sposób tworzenia nowego hasła jest moim zdaniem niewłaściwy. Czemu Ty na serwerze masz tworzyć nowe hasło a nie użytkownik sam sobie? Lepiej wysłać użytkownikowi link do resetowania hasła, on podaje nowe i te nowe jest hashowane i zapisywane do bazy. Wysyłanie hasła otwartym tekstem przez maila nie jest do końca bezpieczne. |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 48 Pomógł: 0 Dołączył: 24.08.2009 Ostrzeżenie: (10%) ![]() ![]() |
wiem (IMG:style_emoticons/default/winksmiley.jpg) ale strona to z niczym poważnym tylko hosting obrazków to wystarczy takie rozwiązanie
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 910 Pomógł: 44 Dołączył: 20.02.2008 Skąd: Łódź Ostrzeżenie: (20%) ![]() ![]() |
Vokiel ale link to strony resetującej hasło jest zbyt niebezpiecznym rozwiązaniem. Ktoś niewsłaściwy dostanie taki link i wzasadzie będzie mógł zmienić hasło każdej osobie
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 2 592 Pomógł: 445 Dołączył: 12.03.2007 Ostrzeżenie: (0%) ![]() ![]() |
@Mlodycompany - zauważ, że bardzo dużo, poważnych serwisów tak robi. Nie dajesz przecież linka w postaci resetuj_hasło.php?mail=twoj@mail.pl, tylko dajesz link, w którym masz hash. Hash powstaje ze złączenia kilku informacji: salt, mail, data rejestracji. Zapisywany jest w bazie wraz z datą utworzenia. Następnie ktoś wchodzi na link i podaje adres mailowy. Szuka się w bazie konta, z tym adresem email, dla którego został utworzony hash, sprawdza się go z tym z adresu, oraz sprawdza datę ważności (hash do resetowania musi mieć jakiś okres ważności - np tydzień). Dopiero spełnienie tych wszystkich warunków daje jakieś poczucie bezpieczeństwa. Sam hash'a nie wymyślisz, bo nawet jeśli znasz datę rejestracji to nie znasz dokładnej godziny, minuty i sekundy no i oczywiście pozostaje jeszcze salt...
@inny02 Schemat postępowania: 1. Kliknięcie w przycisk "nie pamiętam hasła" 2. Wyświetlenie formularza z polem na adres email podany podczas rejestracji. (widzę, że masz oddzielnie username a oddzielnie email - w znaczeniu, że email nie jest loginem - zatem jeszcze dodajesz pole username) 3. Po wysłaniu formularza sprawdzasz w php czy dla danego username jest podany taki email jak przesłany w formularzu, jeśli nie to wyświetlasz komunikat, że dane niepoprawne. Jeśli jest ok, patrz pkt 4 4. Tworzysz sobie hash (jak napisałem wyżej: username+salt+email+cokolwiek tam jeszcze chcesz), zapisujesz go do kolumny np hash, a obok, do kolejnej datę utworzenia. 5. Tworzysz wiadomość email dla użytkownika a w nim link do resetowania hasła: restetpass.php?key=$hash 6. Po wejściu na stronę z danego linku wyświetlasz formularz z polami username + email +nowe_haslo +nowe_haslo_sprawdzenie 7. Odbierasz wyniki z formularza i sprawdzasz ich poprawność: a). czy email + username się zgadza (IMG:style_emoticons/default/cool.gif) . czy dla danego hashu jest w bazie konto z podanym email + username c). czy hash jest aktualny d). czy hasło i jego powtórzenie są identyczne 8. Jeśli wszystko jest ok, zapisujesz (zhashowane) hasło do bazy, usuwasz hash i datę jego wstawienia, ew wysyłasz maila potwierdzającego zmianę hasła, no i oczywiście komunikat, że hasło zostało zmienione, możesz też od razu użytkownika zalogować. No to chyba z grubsza tyle (IMG:style_emoticons/default/winksmiley.jpg) |
|
|
![]() ![]() |
![]() |
Aktualny czas: 14.09.2025 - 17:44 |