2013-09-30 12 views
12

Według instrukcji: password_hash funkcja ta może być używana do (PHP 5 >= 5.5.0)co jest alternatywą dla password_hash() dla (PHP 5 <5.5.0)?

Po wyszukaniu alternatywny sposób znalazłem tę prostą funkcję stąd: http://www.sitepoint.com/password-hashing-in-php/

function generateHash($password) { 
    if (defined("CRYPT_BLOWFISH") && CRYPT_BLOWFISH) { 
     $salt = '$2y$11$' . substr(md5(uniqid(rand(), true)), 0, 22); 
     return crypt($password, $salt); 
    } 
} 

mogę zarządzać mojego kodu za pomocą function_exists przed użyciem , ale moje pytanie dotyczy kodu alternatywnego, jeśli jest bezpieczny, czy nie, czy jest jakaś alternatywa w starszych wersjach PHP?

+2

'crypt()' wygeneruje hash hasła ... nie musisz generować soli, ale to wszystko dodatkowe rzeczy, które masz w tej funkcji – upful

+0

A Zobacz także Openwall's [przenośne PHP hashing framework] (http://www.openwall.com/phpass/) (PHPass). Jest odporny na szereg typowych ataków na hasła użytkowników. – jww

Odpowiedz

16

Dla wersji PHP 5.3.7 <, polecam:

http://www.openwall.com/phpass/

Dla wersji PHP> = 5.3.7, przeznaczenie:

https://github.com/ircmaxell/password_compat

generowania własnych sole wymaga dużej wiedzy, ponieważ dobra, właściwa sól wymaga dużej entropii. Generowanie tej soli w PHP jest kłopotliwe, dlatego zazwyczaj kończysz w zależności od innych zasobów, aby dostarczyć ci ten ciąg, na przykład /dev/urandom lub openssl_random_pseudo_bytes. Uwierz mi, to nie jest coś, co chcesz wypróbować bez poważnych badań i rozważań.

Dzięki nowej password_* API jest zalecane, ale może to być problematyczne, jeśli chcesz obsługiwać starsze wersje PHP, czyli tam, gdzie PHPass przychodzi. Muszę nienawidzić tych, 1 $ miesięcznie hostingi z PHP 5.2

+0

Dziękuję, próbowałem password_compact, ale ma również warunek wymagany, który nie został znaleziony na serwerze hostingowym z PHP 5.4, więc phppass działał jak czar. –

6

Dla wersje PHP> 5.3.7, ale przed wersją 5.5.0 można znaleźć implementację hasła password_hash pod adresem https://github.com/ircmaxell/password_compat napisaną przez tę samą osobę, która opracowała wersję teraz zaimplementowaną w PHP 5.5.0+ i celowo mającą na celu zapewnienie kompatybilności wstecznej

+1

+1, aby uzyskać dodatkowe informacje na https://github.com/ircmaxell/password_compat, ponieważ odpowiedź brzmi jak duplikat :) –