2013-09-30 4 views
12

Laut Handbuch: password_hash kann diese Funktion für (PHP 5 >= 5.5.0)Was ist eine Alternative zu password_hash() für (PHP 5 <5.5.0)?

Nach der Suche nach einem alternativen Weg verwendet wird ich diese einfache Funktion von hier: 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); 
    } 
} 

kann ich meinen Code verwalten, indem function_exists verwenden, bevor Sie , aber meine Frage ist über oben alternativen Code, wenn es sicher ist oder nicht, oder gibt es irgendeine Alternative in älteren Versionen von PHP?

+2

'crypt()' generiert einen Passwort-Hash ... Sie müssen kein Salz erzeugen, aber das ist alles, was Sie in dieser Funktion haben. – upful

+0

A Siehe auch Openwalls [Portable PHP Password Hashing Framework] (http://www.openwall.com/phpass/) (PHPass). Es ist gegen eine Reihe häufiger Angriffe auf Benutzerkennwörter abgesichert. – jww

Antwort

16

Für PHP-Versionen 5.3.7 <, würde ich empfehlen:

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

Für PHP-Versionen> = 5.3.7, Verwendung:

https://github.com/ircmaxell/password_compat

Ihre eigenen Salze generieren braucht viel Know How, denn ein gutes, richtiges Salz erfordert viel Entropie. Das Erzeugen dieses Salzes in PHP ist mühsam, weshalb Sie in der Regel abhängig von anderen Ressourcen sind, um diese Zeichenfolge für Sie bereitzustellen, z. B. /dev/urandom oder openssl_random_pseudo_bytes. Glauben Sie mir, das ist nichts, was Sie ohne ernsthafte Forschung und Überlegung selbst ausprobieren möchten.

die neue password_*-API wird empfohlen, aber es kann problematisch sein, wenn Sie ältere Versionen von PHP unterstützen müssen, die ist, wo PHPass kommt. Muss ich jene $ 1 pro Monat Hosting-Pläne mit PHP hassen 5.2

+0

Danke, ich habe versucht, password_compact, aber es hat auch eine erforderliche Bedingung, die nicht auf dem Hosting-Server mit PHP 5.4 gefunden wurde, so phppass arbeitete wie ein Charme. –

6

Für Versionen von PHP> 5.3.7, aber vor 5.5.0, finden Sie eine Implementierung von password_hash unter https://github.com/ircmaxell/password_compat, geschrieben von der gleichen Person, die die jetzt in PHP 5.5.0+ implementierte Version entwickelt hat und bewusst Abwärtskompatibilität bieten soll

+1

+1 für weitere Informationen auf https://github.com/ircmaxell/password_compat, weil Ihre Antwort wie dupliziert ist :) –

Verwandte Themen