хэш — PHP password_hash и password_verify неверный ложный положительный результат?

Я новичок в функциях паролей PHP, но это кажется мне неправильным.

<?php
$peppa = "ahsd88ah31qnaksdn9325h9asdgh3no1i3859173o5bnn789a79on352390sfm!89235n@n90a&*^T#&*$#$!*$#)";
$pw = 'jesustake-thewheel';
$peppered = $pw . $peppa;

$passhash = password_hash($peppered, PASSWORD_BCRYPT);
var_dump($passhash);

echo "<br>";

$should_fail = $pw . $peppa . ".1asd223";
echo password_verify($should_fail, $passhash);

?>

Как вы можете видеть, я добавляю несколько дополнительных случайных символов в конец моего теста should_fail против пароля, но он все еще возвращает True для соответствия

Я бы исключил это, чтобы потерпеть неудачу, так как есть дополнительные символы в конце, которые не должны соответствовать оригиналу … я пропускаю что-то очевидное здесь или это ошибка в php (возможно, мой php)

Версия 15.6.30

2

Решение

Как MarkBaker уже упоминал в своем комментарии, это ограничение алгоритма BCrypt, который усекает пароли до 72 символов. Для паролей этого более чем достаточно, и это не проблема безопасности, но в вашем случае кажется, что вы достигли этого предела, потому что хотите добавить перец.

Никогда не следует обрезать пароль из-за добавления перца. Банка перца повысить безопасность слабых паролей. Предполагая, что перец имеет разумный размер, пароли, которые достигают ограничения, очень надежны, и для этих паролей перец не нужен. Таким образом, если вы положите перец в конец, вы потеряете часть перца, что лучше, чем потерять часть пароля.

Тем не менее, есть гораздо лучшие способы добавить перец. Вы получаете те же преимущества от шифрования (twoway) хэша с помощью ключа на стороне сервера. Этот ключ на самом деле похож на перец, но у вас есть преимущество в том, что вы можете обмениваться ключом, когда это кажется необходимым (перец становится частью пароля и не может быть изменен до следующего входа в систему). Я попытался объяснить это в конце моего урока о безопасное хранение паролей. Если шифрование для вас не вариант, то, по крайней мере, используйте HMAC, чтобы объединить перец с паролем.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]