Нужно ли хранить соль в БД - PullRequest
       4

Нужно ли хранить соль в БД

0 голосов
/ 26 октября 2011

Я пытаюсь добавить случайно сгенерированную соль вместе с моим паролем, сгенерированным md5.Итак, как мы можем перепроверить соленый пароль?СЛЕДУЕТ ли нам сохранять соль вместе с паролем в БД.Это хороший подход.

$pass='password';
$salt = substr(str_shuffle('0123456789abcdefghijklmnopqrstuvwxyz'), 0, 12);
echo md5($pass.$salt);

Также, пожалуйста, скажите мне, если это правильный способ посола ???

Ответы [ 6 ]

8 голосов
/ 26 октября 2011

Смысл в том, чтобы избежать атак радужной таблицы или предварительно вычисленных хэшей паролей. Чтобы проверить старый пароль, вам нужно будет использовать ту же соль, с которой вы его хешировали, поэтому вам необходимо сохранить ее, например, в БД.

Md5 не является сильным криптохэшем, и вам, вероятно, лучше всего использовать bcrypt. Есть бесплатная реализация PHP http://www.openwall.com/phpass/.

Это будет иметь гораздо более сильное засоление и перемешивание.

7 голосов
/ 26 октября 2011

НЕОБХОДИМО ли сохранять соль вместе с паролем в БД.

да.

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

2 голосов
/ 26 октября 2011

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

На самом деле у вас может быть несколько солей - возможно, одна или несколько из базы данных (MD5 (last_login), SHA1 (имя пользователя) ...) и другая, жестко закодированная в вашем PHP-приложении.

0 голосов
/ 26 октября 2011

Да, важно хранить salt в базе данных - если salt скомпрометировано в базе данных, то одностороннее шифрование для проверки пароля не удастся, поэтому не стоит беспокоиться.

0 голосов
/ 26 октября 2011

Я бы сказал, что вам нужно сохранить его в базе данных.Как еще вы могли бы сохранить случайную соль?Для получения дополнительной информации проверьте: http://crackstation.net/hashing-security.html

0 голосов
/ 26 октября 2011

Пока это не общая соль для всех паролей, вам необходимо сохранить ее в базе данных или сгенерировать ее из значений, которые не изменятся (например, идентификатор пользователя).

Вы можете сделать это в соляном поле или в самом хэше (хороший пример реализации см. В phpass)

Короче говоря: вообще да!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...