2016-06-13 7 views
5

Ich erstelle einen Benutzerregistrierungsdienstanbieter und in diesem ich benutze die Funktion password_hash, um das Passwort des angegebenen Benutzers hash. Unten ist der Codeabschnitt verwendet, um die Hash-Zeichenfolge zu erstellen:PHP-Problem: Passwort-Hash-Funktion ist nicht in der Lage, eine Salz zu generieren

public function generateHash($string) 
    { 
     return password_hash($string, PASSWORD_BCRYPT); 
    } 

Wie ich aus dem PHP-Handbuch zu verstehen, sollen wir nicht unser Salz erzeugen und stattdessen die password_hash Funktion, dass für eine bessere Sicherheit sorgen lassen. Allerdings, wenn ich versuche, einen neuen Benutzer erstellen erhalte ich die unten Warnung:

Warnung: password_hash(): Nicht imstande, Salz

Die Anwendung erstellt den Benutzer aber aufgrund des oben genannten Problem zu erzeugen keine Hash wird geschätzt, wenn jemand mich in den richtigen Punkt kann immer leer sein hoch werden erzeugt und in der Datenbank

ich bin mit PHP Version 7.0.4/Zend Server in meiner Entwicklungsumgebung

Es wäre das Passwort Richtung

+4

Mit welchem ​​Betriebssystem arbeiten Sie? – jszobody

+0

Ein leeres Passwort gibt immer noch einen Hash zurück. –

+3

Von der Suche ist der einzige Ort in der PHP-Quelle, wo diese Fehlermeldung generiert wird, [nicht zufällig Bytes erzeugen] (https://github.com/php/php-src/blob/c72282a13b12b7e572469eba7a7ce593d900a8a2/ext/standard/password. C# L125-L126). Wenn Sie [random_bytes] (http://php.net/random_bytes) betrachten, sehen Sie die verschiedenen Möglichkeiten, wie PHP versucht, Zufälligkeiten zu erzeugen. Ich würde anfangen, diese zu beheben. – jszobody

Antwort

0

Es stellte sich heraus, dass ich ein Problem mit der aktuellen PHP7-Installation hatte. Ich wechselte zu PHP5.6 und alles funktioniert gut.

+3

Während das ist gut zu hören, durch immer noch nicht zu wissen, was das Problem tatsächlich war wirklich niemandem helfen ': - /' – Martin

+0

Wenn Sie herausfinden können, was dies verursacht (einige obskure PHP-Zugriffsprobleme auf der Server vielleicht?) Könntest du es zu deiner Antwort hinzufügen? Prost. – Martin

+0

Rufen Sie diese Funktion http://php.net/manual/en/function.random-bytes.php auf. Es sollte eine Ausnahme mit einer Erklärung ausgelöst werden, warum es die zufälligen Daten nicht sammeln kann, um das Salz zu erzeugen. – robinkunde