2016-06-13 32 views
5

Sto creando un provider di servizi di registrazione utente e in questo sto utilizzando la funzione password_hash per poter hash la password dell'utente fornito. Qui di seguito è la porzione di codice utilizzato per creare la stringa hash:PHP Problema: la funzione password_hash non è in grado di generare un salt

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

Come ho capito dal manuale di PHP, non dobbiamo generare il nostro sale e invece lasciare che la funzione di password_hash prendersi cura di questo per una maggiore sicurezza. Tuttavia, quando si tenta di creare un nuovo utente ottengo l'avvertimento di seguito:

Attenzione: password_hash(): Impossibile generare il sale

L'applicazione crea l'utente, ma a causa del problema di cui sopra non hash verrà generato e la password sarà sempre vuoto nel database

sto usando la versione di PHP 7.0.4/Zend Server nel mio ambiente di sviluppo

sarebbe molto apprezzato se qualcuno mi può puntare nella giustadirection

+4

Su quale sistema operativo ci si trova? – jszobody

+0

Una password vuota restituirà ancora un hash. –

+3

Dalla ricerca, l'unica posizione nella sorgente PHP in cui viene generato questo messaggio di errore è [non riuscendo a generare byte casuali] (https://github.com/php/php-src/blob/c72282a13b12b7e572469eba7a7ce593d900a8a2/ext/standard/password. C# L125-L126). Guardando [random_bytes] (http://php.net/random_bytes) puoi vedere i vari modi in cui PHP tenterà di generare casualità. Comincerei a risolvere i problemi con quelli. – jszobody

risposta

0

Si è verificato un problema con l'installazione corrente di php7. Sono passato a PHP5.6 e tutto funziona bene.

+3

Mentre è bello sentirlo, non sapendo ancora quale sia il problema in realtà non aiuta veramente nessuno ': - /' – Martin

+0

Se riesci a scoprire cosa causa questo (alcuni oscuri problemi di accesso PHP su forse il server?) potresti aggiungerlo alla tua risposta? Saluti. – Martin

+0

Chiama questa funzione http://php.net/manual/en/function.random-bytes.php. Dovrebbe generare un'eccezione con una spiegazione del motivo per cui non è possibile raccogliere i dati casuali per generare il sale. – robinkunde