Обучение/Помощь новичкам | Хеш паролей
Тема закрыта by
NESCOKE
Я вот смотрю и удивляюсь кодерам, почему вы используете всякую дрянь для хеша паролей? Поймите простую вещь, в данный момент существует куча радужных таблиц и хранить пароли в md5() (да даже если md5(sha1(md5($password, $solt))) - это полный пи*дец).
Еще с версии php 5.5 появилась функция password_hash() . Работать с ним на столько удобно и безопасно, что было бы глупо не использовать его.
Немного расскажу о password_hash и покажу примеры исполнения.
password_hash() — используется для хэша пароля
password_verify() — используется для проверки пароля на соответствие хэшу
Произвести хеширование пароля, довольно просто:
Вот мы и получили хеш пароля, записали его в бд. Теперь, при авторизации пользователя нам нужно проверить, соответствует ли хеш пароля введенному паролю.
Здесь все ни чуть не сложнее:
Вот и все! спасибо за внимание, полезные ссылки на документацию:
- Все о password_hash()
- Подготовленные запросы mysqli
________
посл. ред. 14.03.2019 в 14:04; всего 2 раз(а); by Todge
Еще с версии php 5.5 появилась функция password_hash() . Работать с ним на столько удобно и безопасно, что было бы глупо не использовать его.
Немного расскажу о password_hash и покажу примеры исполнения.
password_hash() — используется для хэша пароля
password_verify() — используется для проверки пароля на соответствие хэшу
Произвести хеширование пароля, довольно просто:
<?Php
// Получаем из формы пароль методом post
$password = $_POST['password'] // даже фильтровать не надо
// PASSWORD_DEFAULT или PASSWORD_BCRYPT - выбор за вами
// PASSWORD_DEFAULT от 60 и более символов в хеше (длинна)
// PASSWORD_BCRYPT длинна хеша ровно 60 символов
$hash = password_hash($password, PASSWORD_DEFAULT);
// Все, мы получили хеш пароля, выглядит он примерно
// Вот так: $2y$10$.vGA1O9wmRjrwAVXD98HNOgsNpDczlqm3Jq7KnEd1rVAGv3Fykk1a
?>
Вот мы и получили хеш пароля, записали его в бд. Теперь, при авторизации пользователя нам нужно проверить, соответствует ли хеш пароля введенному паролю.
Здесь все ни чуть не сложнее:
<?
// Создаем подготовленный запрос (с таким запросом ни каких sql инъекций никогда не будет, запомните это)
$stmt = $db->prepare("SELECT `id`.`users`.`password` FROM users WHERE login= ?");
$stmt->bind_param("s", $_POST['login']);
$stmt->execute();
$user = $stmt->get_result()->fetch_assoc();
if ($user && password_verify($_POST['password'], $user['password'])){
echo "Все верно, пароли совпадают, через 5 секунд вас перенаправит на сайт!";
}else{
echo "Увы, но вы ввели не верный пароль";
}
?>
Вот и все! спасибо за внимание, полезные ссылки на документацию:
- Все о password_hash()
- Подготовленные запросы mysqli
________
посл. ред. 14.03.2019 в 14:04; всего 2 раз(а); by Todge
[xrystalll] (08.03.2019 в 11:18)
да да я md5(base64_encode(md5
да да я md5(base64_encode(md5
Еще и солишь наверное?
.67.
давно так делаю))) не новинка))
DELETED
8 марта 2019, в 12:20
Delete
password_hash() - я не против, НО Добро пожаловать в мир php7
DELETED
8 марта 2019, в 12:23
Delete
DELETED
8 марта 2019, в 12:37
Delete
[xrystalll] (08.03.2019 в 12:23)
PhpStorm , люблю php.net
Также можно использовать пердопределенные константы для этого параметра
PhpStorm , люблю php.net
Также можно использовать пердопределенные константы для этого параметра
это косяк переводчика, в оригинале же на инглише ясен пень нет такого слова
дай ссыль на какой странице это я кентам покажу
DELETED
8 марта 2019, в 12:44
Delete
[xrystalll] (08.03.2019 в 12:40)
PhpStorm , так на той. что ты написал http://php.net/manual/ru/function.sodium-crypto-pwhash-str.php
PhpStorm , так на той. что ты написал http://php.net/manual/ru/function.sodium-crypto-pwhash-str.php
ааааа ясно я просто прочитал что солит пароли автоматом поэтому про дополнительные параметры уже не стал читать
класс косяк
PhpStorm (08.03.2019 в 12:20)
как всегда дичь о радужных таблицах
password_hash() - я не против, НО Добро пожаловать в мир php7
как всегда дичь о радужных таблицах
password_hash() - я не против, НО Добро пожаловать в мир php7
Это не дичь, это реальность.
--
В принципе функции ничем не отличаются, кроме того, что соль генерируется самостоятельно и параметры обязательны.
Тот же аргон используется и в password_hash() но с учетом, что он есть в сборке к php
DELETED
8 марта 2019, в 12:52
Delete
md5(sha1(md5($password, $solt)))
Чтобы наверняка))
Пусть хоть так)Некоторые индивидуумы вообще не хешируют.
DELETED
8 марта 2019, в 12:54
Delete
Todge (08.03.2019 в 12:48)
PhpStorm (08.03.2019 в 12:20)
как всегда дичь о радужных таблицах
password_hash() - я не против, НО Добро пожаловать в мир php7
Это не дичь, это реальность.
--
В принципе функции ничем не отличаются, кроме того, что соль генерируется самостоятельно и параметры обязательны.
Тот же аргон используется и в password_hash() но с учетом, что он есть в сборке к php
PhpStorm (08.03.2019 в 12:20)
как всегда дичь о радужных таблицах
password_hash() - я не против, НО Добро пожаловать в мир php7
Это не дичь, это реальность.
--
В принципе функции ничем не отличаются, кроме того, что соль генерируется самостоятельно и параметры обязательны.
Тот же аргон используется и в password_hash() но с учетом, что он есть в сборке к php
радужные таблицы - дичь для нубов попугать их
в password_hash() ЕМНИП, то если добавлять алгоритм PASSWORD_BCRYPT, то соль тоже будет автоматом добавляться и хэш для одного и того же пароля будет всегда разный, так что не слишком сильно они и отличаются