Хранение паролей в md5

  • Автор темы APTEMOH
  • Дата начала
Remdev
Участник
Сообщения
77
Реакции
19
  • #21
Vine написал(а):
Работает, осталось только поставить платежный пароль :)

Как я понял, благодаря платежному паролю и шифрованию, хакер почти никак не сможет вывести деньги, даже есть у него есть БД?
Нет, это поможет лишь если ваш проект не представляет интереса
 
Remdev
Участник
Сообщения
77
Реакции
19
  • #22
А и да. md5 настолько быстро перебирается, что использовать глубо уже. Для хеширования паролей есть замечательная функция password_hash(). Если хотите действительно хотите, чтоб если базу утащат, то чтоб не могли пароли подобрать то используйте именно её. Как использовать? Всё просто.
Сначала, поле для хранения пароля делайте не менее 60 символов(а лучше 255)
А далее всё просто. Если вам надо получить хеш пароля(для записи его в базу) используйте функцию password_hash()
password_hash($password, PASSWORD_BCRYPT);

Если же хотите проверить корректность введёного пароля, то просто используйте функцию password_verify()

if(password_verify($password,$hash)) {
echo "Ok";
} else {
echo "Wrong password";
}

И всё. Это намного безопаснее.
 
Последнее редактирование модератором:
Remdev
Участник
Сообщения
77
Реакции
19
  • #23
А и да, способ который написал ТС подвержен атаке по времени. Да, атаку сложно реализовать, но на крупных фермах с этим есть смысл заморочиться
 
APTEMOH
Участник
Сообщения
889
Реакции
256
Telegram
APTEMOH
  • #24
Remdev написал(а):
А и да, способ который написал ТС подвержен атаке по времени. Да, атаку сложно реализовать, но на крупных фермах с этим есть смысл заморочиться
Мой способ почти универсален. Т.к. используется соль для шифрования. Т.е. не зная ключа, а ключ может быть как набором буков,символов и цифр,так и именем жены, хрен когда раскодируешь. Ни какие бруты не помогут. Учите матчасть :)
 
Remdev
Участник
Сообщения
77
Реакции
19
  • #25
APTEMOH написал(а):
Мой способ почти универсален. Т.к. используется соль для шифрования. Т.е. не зная ключа, а ключ может быть как набором буков,символов и цифр,так и именем жены, хрен когда раскодируешь. Ни какие бруты не помогут. Учите матчасть :)
Лучше бы вы матчасть учили бы. Ну или узнали бы хотя бы как php сравнивает строки.
 
APTEMOH
Участник
Сообщения
889
Реакции
256
Telegram
APTEMOH
  • #26
Remdev написал(а):
Лучше бы вы матчасть учили бы. Ну или узнали бы хотя бы как php сравнивает строки.
Какое отношение это имеет к ключу?
 
Remdev
Участник
Сообщения
77
Реакции
19
  • #27
APTEMOH написал(а):
Какое отношение это имеет к ключу?
Соль в случае с md5 не поможет. Слишком устаревший алгоритм, который достаточно быстро брутиться.
Хотя давай по порядку расскажу, что именно здесь не так
APTEMOH написал(а):
Код:
public function md5Password($pass){
        $pass = strtolower($pass);
        return md5("shark_md5"."-".$pass);
}
1) Ты сначала все символы в пароле преобразовываешь в нижний регистр. Как результат пароли Password, pAssWord, password и PASSWORD будут одни и те же. При бруте паролей мы отсекаем все символы в разном регистре, их проверять не надо. Строчку со strtolower убрать
2) Соль ты добавляешь в конце. Как результат, найдя в базе хеш от пароля, который ты знаешь соль брутиться в разы быстрее(особенность алгоритма md5). Соль добавлять в конце к паролю
3) Если каким либо образом злоумышленник узнает соль и у него будет бд(например получил дамп сайта), он может подобрать пароли сгенерировав радужные таблицы. Соль у каждого пользователя должна быть своя.
4) Ты используешь md5 в 2015 году. RFC 6151 выпустили ещё в 2011, специально для таких же "программистов"
 
Overdos
Местный
Сообщения
36
Реакции
4
  • #28
Привет всем! Собственно и у меня трабла с логином в игру после установки данных обновлений. По теории сделано всё правильно (по инструкции, поэтапно). Проверки вроде все верные, но ожидаемого результата нет. Может дело в самой функции? Я имею ввиду соль. Буду рад помощи.
 
APTEMOH
Участник
Сообщения
889
Реакции
256
Telegram
APTEMOH
  • #29
Overdos написал(а):
Привет всем! Собственно и у меня трабла с логином в игру после установки данных обновлений. По теории сделано всё правильно (по инструкции, поэтапно). Проверки вроде все верные, но ожидаемого результата нет. Может дело в самой функции? Я имею ввиду соль. Буду рад помощи.
Да в ней. В базе пароли без соли, а проверка с солью.
Через онлайн md5 сделайте хош пароля с ключом и вставьте в базу. Тогда при сравнении не будет ошибок.
 
Overdos
Местный
Сообщения
36
Реакции
4
  • #30
Я так понимаю соль (слово ) в md5 загнать?
 
APTEMOH
Участник
Сообщения
889
Реакции
256
Telegram
APTEMOH
  • #31
Код:
public function md5Password($pass){
$pass = strtolower($pass);
return md5("shark_md5"."-".$pass);
}
Да, вот это shark_md5-пароль
 
Overdos
Местный
Сообщения
36
Реакции
4
  • #32
Так, и всё же не могу разобраться
1. Слово соли перевести в md5
2. Пароль и соль тоже перевести в md5 таким видом - словосолипароль в md5

Но тогда получается нужно чтобы все пароли автоматически с солью уже записывались в бд

После выполнения двух действий которые выполнил (описал), результата нет.
 
Overdos
Местный
Сообщения
36
Реакции
4
  • #33
Проблема решена! Вся проблема была в БД. В ячейке pass было максимальное количество символов 20, при хешировании символов получалось больше, в итоге просто лишняя часть символов просто обрезалась.
 
APTEMOH
Участник
Сообщения
889
Реакции
256
Telegram
APTEMOH
  • #34
Remdev написал(а):
Соль в случае с md5 не поможет. Слишком устаревший алгоритм, который достаточно быстро брутиться.
Хотя давай по порядку расскажу, что именно здесь не так

1) Ты сначала все символы в пароле преобразовываешь в нижний регистр. Как результат пароли Password, pAssWord, password и PASSWORD будут одни и те же. При бруте паролей мы отсекаем все символы в разном регистре, их проверять не надо. Строчку со strtolower убрать
2) Соль ты добавляешь в конце. Как результат, найдя в базе хеш от пароля, который ты знаешь соль брутиться в разы быстрее(особенность алгоритма md5). Соль добавлять в конце к паролю
3) Если каким либо образом злоумышленник узнает соль и у него будет бд(например получил дамп сайта), он может подобрать пароли сгенерировав радужные таблицы. Соль у каждого пользователя должна быть своя.
4) Ты используешь md5 в 2015 году. RFC 6151 выпустили ещё в 2011, специально для таких же "программистов"
Много если в ваших словах. "Если да кабы, во рту выросли грибы" (с) Народная мудрость
Ключ в начале у меня. Можно сделать и так: ключ1.пароль.ключ2. Ключ1 = g43YEge3Y&^%Yhgs2r5@%TRwegvsBGwehede и т.д. , такой же принцип у второго ключа. Между ними пароль. Оба ключа известны только разработчику (ключ в базе НЕ хранится) и они уникальны и не брутятся ничем.
Вот такою соль ничем не взломаешь.
Все! хватит в теме флудить, учите мат часть :)
 
  • Like
Реакции: ilk
Remdev
Участник
Сообщения
77
Реакции
19
  • #35
APTEMOH написал(а):
Много если в ваших словах. "Если да кабы, во рту выросли грибы" (с) Народная мудрость
Ключ в начале у меня. Можно сделать и так: ключ1.пароль.ключ2. Ключ1 = g43YEge3Y&^%Yhgs2r5@%TRwegvsBGwehede и т.д. , такой же принцип у второго ключа. Между ними пароль. Оба ключа известны только разработчику (ключ в базе НЕ хранится) и они уникальны и не брутятся ничем.
Вот такою соль ничем не взломаешь.
Все! хватит в теме флудить, учите мат часть :)
А такие ключи дают коллизию на более маленьких строках. Так что учите лучше вы матчасть, а не думайте, что умный такой.
 
ilk
Участник
Сообщения
23
Реакции
1
  • #36
сделал все как написано, зарегистрировался, в бд пароль прописался зашифрованый, вот только в аккаунт не заходится. что делать, подскажите?
поле pass в бд увеличил до 55 чтоб пароль не обрезался и ничего/
в id1 по старому паролю входит
 
Последнее редактирование:
ilk
Участник
Сообщения
23
Реакции
1
  • #37
все нормально встало, разобрался наконец, спасибо за статью, артемон уже не впервый раз помог мне ))
 
Shooter
Участник
Сообщения
9
Реакции
1
  • #38
Всё понимаю а как уже писалось вот зачем strtolower. Поповоду уникальности соли так здесь можно использовать дату, логин, email полностью или некоторое количество символов из них.
 
APTEMOH
Участник
Сообщения
889
Реакции
256
Telegram
APTEMOH
  • #39
ilk написал(а):
все нормально встало, разобрался наконец, спасибо за статью, артемон уже не впервый раз помог мне ))
Рад что разобрался. :)
Видимо в базе старые пароли сидели!?.
 
ilk
Участник
Сообщения
23
Реакции
1
  • #40
не тупо забыл в одном документе прописать, а пароли, да, тоже пришлось кодировать, только при кодировке пароли прописанные в базе пришлось в нижний регистр перевести, а то пароли разные получались и при кодировке с верхним не заходилось в акк
 
Сверху