[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Создание Соли(Solt)
Гость_Александр
Доброго времени суток. Пару раз читал про соль и что же это такое, но в итоге обнаружил что в одном из моих скриптов реализована аналогичная система. А теперь вопрос, похоже это на "соль" или же там по-другому делается?
Собвственно код:

<form action=' ' method='post'>
Введите Логин:<br>
<input type='text' name='login'><br>
Введите Пароль:<br>
<input type='password' name='pass'><br>
<input type='submit' value='Отправить'>
</form>

<?php
If(isset($_POST['login'])) {$login=$_POST['login'];}
If(isset($_POST['pass'])) {$pass=$_POST['pass'];}
$login=trim($login);
$login=strip_tags($login);
$pass=trim($pass);
$pass=strip_tags($pass);
$rand=rand();
If(!empty($pass)) {$p=$pass+$rand;}
$p=md5(md5($p));
?>
Игорь_Vasinsky
соль - это произвольный набор символов - на твоё усмотрение, которыен добавляются к хешируемым элементам.

единственное правило - она должна быть постоянна и идентична при хеширование и при проверки хеша.

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Guest
Ну в моем случае произвольный набор символов это $rand=rand(), который добавляется к паролю пользователя, а затем полученная "каша" 2 раза шифруется в md5. Я так понимаю все пункты "соли" я выполнил?)
Guest
Ах ну да, тогда появляется одна проблема, рандом всегда разный, и в таком виде делается невозможным сравнить вводимый пользователем пароль и тот, что в базе будет лежать.
altairo2087
нужна колонка в базе, соль хранить
Guest
Это понятно. Дело не в этом. Объясню на примере. Регистрируется пользователь, вводит пароль 12345. При обработке пароля к нему прибавляется рандомные числа($rand), допустим, 12345+93632=105977.Полученные результат мы 2 раза шифруем в md5 и заносим в базу.Хорошо. Пользователь полазил по сайту, порадовался и вышел.На следующий день захотел залогиниться в новь, но у него не вышло.А почему? Потому что вводя свой пароль 12345 к нему прибавились теперь 345872($rand) и полученный результат уже не совпадет с паролем, который лежит в базе.
Hello
Гость_Александр, самый простой вариант - генерируйте соль от логина пользователя и статической строки, например
$login.'#5JTMl*et8'

Самый правильный - генерировать уникальную соль и хранить её вместе с логином и хёщем пароля

_____________
VPS от 5$, первые 2 месяца - бесплатно.
sadmin
Цитата
Самый правильный - генерировать уникальную соль и хранить её вместе с логином и хёщем пароля

Тогда и солить нужно не склеиванием двух строк, а посложней. Чтобы алгоритм добавления соли был неизвестен, иначе по взломанной базе со значениями соли, можно попробовать организовать перебор. А так, да, статичная строка в PHP.
Игорь_Vasinsky
Цитата
При обработке пароля к нему прибавляется рандомные числа($rand)


я же сказал - соль - как константа - она постоянна и не должна меняться.

как тока сменил соль - то хеш со старой солью уже не проверишь.

Цитата
Тогда и солить нужно не склеиванием двух строк, а посложней


для чёго?

sha1($pass.$soul);

ни в жизнь не раскодируешь и не подберёшь

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Hello
sadmin, посмотрите как происходит соление в известных движках.
Велосипеды и безопасность не совместимы.

_____________
VPS от 5$, первые 2 месяца - бесплатно.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.