Passwort-Sicherheit mangelhaft
@henbug @mor_dark
So generieren wir zZ unseren Passwort-Hash:
s. \QUI\Users\Manager\genHash()
/**
* Generates a hash of a password
*
* @param string $pass
* @param string $salt (optional) - use specific salt for password generation [default: randomly generated]
*
* @return string
*/
public static function genHash($pass, $salt = null)
{
if ($salt === null) {
$randomBytes = openssl_random_pseudo_bytes(SALT_LENGTH);
$salt = mb_substr(bin2hex($randomBytes), 0, SALT_LENGTH);
}
return $salt . md5($salt . $pass);
}
Man beachte den return-Wert. Da md5 immer eine feste Länge als Output hat und der salt einfach vorne an den md5-Hash angehangen wird, muss man einfach vom Hash der in der Datenbank steht, die letzten 32 Zeichen abschneiden und erhält somit automatisch den Salt.
Somit ist es für einen Angreifer sehr einfach, Rainbow Tables zu erstellen oder Dictionary Angriffe durchzuführen.
Vorschlag: md5 komplett rauswerfen und auf moderne Passwort-Hash-Algorithmen setzen, wie z.B. bcrypt
oder scrypt
.