Я использую bcrypt для php и хочу, чтобы потенциальный хакер занял много времени для входа - PullRequest
1 голос
/ 27 декабря 2011

Я ссылаюсь на этот ответ: https://stackoverflow.com/a/4766811/1114105

Мы повторно хэшируем пароль, но затем мы ничего не делаем с хэшем (мы используем пароль в виде открытого текста, отправленный POST в функции CheckPasswordаутентифицировать).Хакер не может обойти часть повторного хэширования?

Ниже приведен мой псевдокод.

, если POST отправляет пароль / имя пользователя, а $ row ['password'] - это хешированный пароль в sql.

$t_hasher = new PasswordHash(13, FALSE);
$hash = $t_hasher->HashPassword($_POST['password']);
$check = $t_hasher->CheckPassword($_POST['password'], $row['password']);
if($check) Great success else Wrong credentials`

Примечание. Я обнаружил, что рабочий фактор не влияет на время, необходимое для запуска CheckPassword.Это только увеличивает время для HashPassword.

Ответы [ 3 ]

1 голос
/ 27 декабря 2011

Ну, есть два типа атак на пароли:

  1. Злоумышленник может каким-то образом считывать ваши хэши паролей, которые хранятся в базе данных (SQL-инъекция или любой другой способ получить доступ к вашемусистема).Теперь злоумышленник хочет получить исходный пароль (поскольку хешированный не дает ему большого доступа).
  2. Злоумышленник многократно использует вашу регистрационную форму с разными паролями (перебор).

В случае, если он уже обошел вашу форму входа, ему все равно, сколько времени потребуется для одного входа в систему.Но его волнует, сколько времени потребуется, чтобы перебор пароля в его системе (ах).Таким образом, фактор работы просто усложняет взлом пароля, пробуя каждую комбинацию и хешируя ее по тому же алгоритму, что и ваша система.«повторное хеширование» пароля для увеличения продолжительности процесса входа в этом случае не поможет.

В случае 2, однако, он действительно заботится о том, сколько времени нужно для попытки пароля в вашей системе, потому что он должен сделать это много, чтобы получить правильный логин (плюс он, вероятно, должен догадатьсяимя пользователя, если он не может это выяснить).Атакующий должен быть очень тупым, потому что он оставит следы и потратит время.Вы можете сделать его жизнь более несчастной, заблокировав его IP после определенного количества неудачных входов в систему.Кроме того, вы можете добавить sleep после каждого неверного входа (для режима сна не требуется столько ресурсов, как для интенсивной операции хэширования).

0 голосов
/ 01 января 2019

Увеличение стоимости:

Пример кода в php:

$ hash = "Hello"

$ hash = password_hash ($ password, PASSWORD_DEFAULT, массив ('cost' => 15));

echo $ hash;

var_dump (password_verify ($ password, $ hash));

Таким образом, стоимость 15 занимает много времени для хеширования и взлома

В вышеприведенном примере показан процесс хеширования, а также способ проверки вашего хэша для целей аутентификации, начиная с

«BCRYPT СОЗДАЕТ НОВЫЙ ХЭШ ВСЕГДА, ЕГО БЕГАЕТ !!!!»

Поместите этот код в файл .php, а затем запустите его, проверьте, работает ли код

Не забывайте <? php? >

0 голосов
/ 27 декабря 2011

Алгоритм хеширования не является безопасным IMO, однако есть несколько таких, которые замедляют хакеров, наша единственная надежда, что они получат от этого выгоду ...

...