[英]password_hash, Password_default causing issue
我有2个使用不同代码的注册页面,但我希望它们返回相同的密码哈希! 或Password_verify首先接受的格式至少是:
function _password_hash($password) {
return password_hash($password, PASSWORD_DEFAULT);
}
$db->query(sprintf("INSERT INTO users (user_name, user_email, user_phone, user_password, user_firstname, user_lastname, user_gender, user_birthdate, user_registered, user_activation_key) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s)", secure($args['username']), secure($args['email']), secure($args['phone']), secure(_password_hash($args['password'])), secure(ucwords($args['first_name'])), secure(ucwords($args['last_name'])), secure($args['gender']), secure($args['birth_date']), secure($date), secure($activation_key) )) or _error(SQL_ERROR_THROWEN);
第二个是:
$user_firstname = $mysqli->escape_string($_POST['firstname']);
$user_lastname = $mysqli->escape_string($_POST['lastname']);
$user_name = $mysqli->escape_string($_POST['user_name']);
$user_email = $mysqli->escape_string($_POST['user_email']);
$user_password = $mysqli->escape_string(password_hash($_POST['user_password'], PASSWORD_DEFAULT));
$hash = $mysqli->escape_string(md5(time()*rand(1, 9999)));
$sql = "INSERT INTO users (user_firstname, user_lastname, user_name, user_email, user_password, hash) "
. "VALUES ('$user_firstname','$user_lastname','$user_name','$user_email','$user_password', '$hash')";
密码输出不一样
由于salting函数, password_hash()
永远不会返回相同的密码哈希,但是它始终会产生password_verify()
接受的格式。 如果不是这种情况,请检查哈希存储为varchar(255)
,并且两个页面使用相同的PHP版本。
如果使用password_hash(),则既不能转义用户密码,也不应转义密码哈希(它已经是安全的形式)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.