Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php]Szyfrowanie haseł za pomoca crypt();
Forum PHP.pl > Forum > PHP
starterrrrr
Witam.

Modyfikuje skrypt, który szyfruje hasła za pomocą funkcji:

  1. $haslo_crypt = crypt($haslo,'aa')


Czytam w manualu na temat tej funkcji i nie jestem pewien, czy jest to obecnie optymalny sposób kodowania haseł. Nie rozumie, dlaczego ta funkcja na początku zwracanego ciągu dokleja ten drugi parametr czyli 'aa', powinien być chyba "tajny". Niebardzo rozumie do czego jest ten drugi parametr.

Problemem jest to, że kilka tysięcy haseł jest już w ten sposób zaszyfrowanych.

Co można zrobić w momencie gdy dużo haseł jest już zaszyfrowanych? Żeby wzmocnić poziom bezpieczeństwa tych haseł.
hikaryu
wymuś na użytkownikach wygenerowanie nowego hasła, jak już poprawisz chyba tak najłatwiej.
starterrrrr
Cytat(hikaryu @ 12.11.2015, 11:20:51 ) *
wymuś na użytkownikach wygenerowanie nowego hasła, jak już poprawisz chyba tak najłatwiej.


Tylko, że te kilka tysięcy użytkowników nie bedzie mogło się zalogować już :/ zjedzą mnie za to.

Jak jest z tym drugim parametrem funkcji crypt() ?
Pyton_000
Zmień rozmiar pola z hasłem w BD na większy.
Wskrypcie logowania gdzie masz sprawdzanie obecnego hasła dodaj szyfrowanie haseł przez
http://nl3.php.net/manual/en/function.password-hash.php
i aktualizuj to pole.

Potem pod spodem gdzie masz warunek na złe hasło dodaj jeszcze sprawdzanie haseł przez
http://nl3.php.net/manual/en/function.password-verify.php

i dopiero jak ta weryfikacja nie przejdzie to wywal komunikat

Dzięki temu transparentnie zmienia się hasła w systemie na inne hashowanie.
starterrrrr
Cytat(Pyton_000 @ 12.11.2015, 11:57:11 ) *
Zmień rozmiar pola z hasłem w BD na większy.
Wskrypcie logowania gdzie masz sprawdzanie obecnego hasła dodaj szyfrowanie haseł przez
http://nl3.php.net/manual/en/function.password-hash.php
i aktualizuj to pole.

Potem pod spodem gdzie masz warunek na złe hasło dodaj jeszcze sprawdzanie haseł przez
http://nl3.php.net/manual/en/function.password-verify.php

i dopiero jak ta weryfikacja nie przejdzie to wywal komunikat

Dzięki temu transparentnie zmienia się hasła w systemie na inne hashowanie.


Dziękuje za obszerną wypowiedź. Przetestuje to dzisiaj.

Witam jeszcze raz.

Czyli w tym czasie zarówno hasła szyfrowane w obecny sposób będą działały jak i nowe? a przy każdym zalogowaniu jezeli klient ma stare hasło to aktualizuje na nowe?

Mechanizm ten można np po pół roku wyłaczyć, żeby system przyjnował już tylko nowe hasła i osoby, które beda chciały sie lgoować wtedy beda musiały korzystac z opcji przypomnienia?
Pyton_000
Przy zmienianiu hasła stare wywalasz z bazy.
I tak, po jakimś możesz wyłączyć stare hasła, tylko musisz dostosować resztę systemu do nowych haseł.
starterrrrr
Cytat(Pyton_000 @ 16.11.2015, 18:19:18 ) *
Przy zmienianiu hasła stare wywalasz z bazy.
I tak, po jakimś możesz wyłączyć stare hasła, tylko musisz dostosować resztę systemu do nowych haseł.



Dziękuje za pomoc.

Mam jeszcze takie pytanie, jakie parametry ustawić dla tej funkcji, żbey hasła były dosyć bezpieczne.

  1. password_hash ( string $password , integer $algo [, array $options ] );
  2.  
  3. //poniższy przykłąd będzie ok ?
  4. password_hash($password, PASSWORD_DEFAULT);
Pyton_000
  1. $options = [
  2. 'cost' => 12,
  3. ];
  4. echo password_hash($password, PASSWORD_BCRYPT, $options)."\n";


Uprzedzam Twoje pytanie, password_hash generuje za każdym razem inny hash dla tego samego hasła. To jest normalne. Do weryfikacji masz

http://php.net/manual/en/function.password-verify.php
starterrrrr
Cytat(Pyton_000 @ 19.11.2015, 15:44:41 ) *
  1. $options = [
  2. 'cost' => 12,
  3. ];
  4. echo password_hash($password, PASSWORD_BCRYPT, $options)."\n";


Uprzedzam Twoje pytanie, password_hash generuje za każdym razem inny hash dla tego samego hasła. To jest normalne. Do weryfikacji masz

http://php.net/manual/en/function.password-verify.php



Własnie zauważyłem, jeszcze raz dzieki smile.gif
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.