$options = [ 'salt' => '1234567890abcdefghijklmnopqrstuvwxyz', ];
$hash = password_hash($pw, PASSWORD_DEFAULT, $options);
HALT: Das ist FALSCH!
Damit erleichterst Du es einem Angreifer, der die Datenbank erbeutet hat, die Passwörter zu extrahieren, denn der muss nur einmal hingehen und die Rainbow.Tables für Deinen konstanten Salt erzeugen.
Richtig ist, den salt NICHT vorzuschreiben, denn dann nimmt password_hash() jedes Mal einen zufälligen und der Angreifer muss für jedes Passwort neue Rainbow-Tables erzeugt und gespeichert haben. Zumindest das Speichern ist derzeit nicht möglich, denn:
64 mögliche Zeichen im Salt und 16 Stellen im Salt ergeben schlappe 64^16=79.228.162.514.264.337.593.543.950.336 verschiedene Möglichkeiten für den Salt!
Jörg Reinholz