За последние 24 часа нас посетил 12571 программист и 666 роботов. Сейчас ищут 365 программистов ...

Хеширование паролей - как лучше и безопаснее это сделать?

Тема в разделе "Подворотня", создана пользователем eldor, 7 дек 2013.

  1. eldor

    eldor Активный пользователь

    С нами с:
    3 май 2013
    Сообщения:
    202
    Симпатии:
    20
    Как лучше и безопаснее хешировать пароль юзера? Как понимаю, md5 и sha1 уже давно устарели...
     
  2. MiksIr

    MiksIr Активный пользователь

    С нами с:
    29 ноя 2006
    Сообщения:
    2.340
    Симпатии:
    44
  3. eldor

    eldor Активный пользователь

    С нами с:
    3 май 2013
    Сообщения:
    202
    Симпатии:
    20
    Re: Хеширование паролей - как лучше и безопаснее это сделать

    А на более ранних версиях ниже 5.5.?

    Добавлено спустя 31 минуту 15 секунд:
    Re: Хеширование паролей - как лучше и безопаснее это сделать?
    А crypt() может обеспечить хорошую безопасность?
     
  4. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.415
    Симпатии:
    1.767
    Re: Хеширование паролей - как лучше и безопаснее это сделать

    Крипт это функция которая использует алгоритм какой найдет хороший в системе.
    Наверное да.
     
  5. eldor

    eldor Активный пользователь

    С нами с:
    3 май 2013
    Сообщения:
    202
    Симпатии:
    20
    Re: Хеширование паролей - как лучше и безопаснее это сделать

    Вот только я не до конца пойму как функция crypt() работает...
    ...
    $hash = crypt($pass, "$salt");
    ...
    $pass - пароль пользователя.
    $salt - соль.
    Вот только не пойму в каком виде должна быть соль...

    Или я неправильно понимаю данную функцию?
     
  6. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.415
    Симпатии:
    1.767
    Re: Хеширование паролей - как лучше и безопаснее это сделать

    Строка само собой. Передавай логин - сойдёть. Кавычки не нужны конечно.
     
  7. MiksIr

    MiksIr Активный пользователь

    С нами с:
    29 ноя 2006
    Сообщения:
    2.340
    Симпатии:
    44
    Re: Хеширование паролей - как лучше и безопаснее это сделать

    password_hash это надстройка над crypt, что бы попроще начинающим жилось. Там на странице есть ссылка на пользовательскую реализацию password_hash - можете взять и использовать.
     
  8. eldor

    eldor Активный пользователь

    С нами с:
    3 май 2013
    Сообщения:
    202
    Симпатии:
    20
    Re: Хеширование паролей - как лучше и безопаснее это сделать

    Всем спс.

    Добавлено спустя 20 минут 10 секунд:
    Re: Хеширование паролей - как лучше и безопаснее это сделать?
    А если перенести сайт с одного хостинга на другой, то хешированный пароль не изменится?
     
  9. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.415
    Симпатии:
    1.767
    Re: Хеширование паролей - как лучше и безопаснее это сделать

    Вот это интересный вопрос...
     
  10. MiksIr

    MiksIr Активный пользователь

    С нами с:
    29 ноя 2006
    Сообщения:
    2.340
    Симпатии:
    44
    Re: Хеширование паролей - как лучше и безопаснее это сделать

    Раньше могло быть такое, что на новом хостинге не было нужного алгоритма. Тогда ой. Но начиная с php 5.3 все алгоритмы реализовали на уровне PHP (раньше было на уровне библиотек дистрибутива операционной системы), так что переносимость должна быть 100%.
     
  11. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    10.778
    Симпатии:
    1.158
    Адрес:
    там-сям
    Re: Хеширование паролей - как лучше и безопаснее это сделать

    +1
    этому форуму чертовски не хватает "лайков" ))
     
  12. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.415
    Симпатии:
    1.767
    Re: Хеширование паролей - как лучше и безопаснее это сделать

    Кроме всего прочего
     
  13. eldor

    eldor Активный пользователь

    С нами с:
    3 май 2013
    Сообщения:
    202
    Симпатии:
    20
    Re: Хеширование паролей - как лучше и безопаснее это сделать

    Я иногда не понимаю когда шутят, а когда в серьез говорят опытные программеры))) Вот и сейчас недопонимаю данные два сообщения)))
     
  14. romach

    romach Старожил

    С нами с:
    26 окт 2013
    Сообщения:
    2.904
    Симпатии:
    719
    Re: Хеширование паролей - как лучше и безопаснее это сделать

    На некоторых форумах есть спасибки которые отображаются под сообщением. Обычно используются как тот же +1 или согласие с автором. Удобно на самом деле, действительно не хватает.
     
  15. eldor

    eldor Активный пользователь

    С нами с:
    3 май 2013
    Сообщения:
    202
    Симпатии:
    20
    Re: Хеширование паролей - как лучше и безопаснее это сделать

    Теперь понятно))) Сам сразу не понял)))
     
  16. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.533
    Симпатии:
    623
    Re: Хеширование паролей - как лучше и безопаснее это сделать

    Всё актуально и по полочкам: https://wiki.php.net/rfc/password_hash

    Добавлено спустя 4 минуты 17 секунд:
    Re: Хеширование паролей - как лучше и безопаснее это сделать?
    Кратко по существу: соль не спасет устаревший алгоритм, а вот если password_hash делать с PASSWORD_BCRYPT, то можно и без неё.

    Добавлено спустя 3 минуты 5 секунд:
    Re: Хеширование паролей - как лучше и безопаснее это сделать?
    а по жизни, мы делаем хэши, чтобы не потерять пароли, если сольют базу. Код труднее слить, чем базу. Поэтому есть смысл держать соль в коде.
     
  17. MiksIr

    MiksIr Активный пользователь

    С нами с:
    29 ноя 2006
    Сообщения:
    2.340
    Симпатии:
    44
    Re: Хеширование паролей - как лучше и безопаснее это сделать

    Вот это надо же так дать ссылку, а потом "кратко по существу" начать пороть такую чушь.
     
  18. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.533
    Симпатии:
    623
    Re: Хеширование паролей - как лучше и безопаснее это сделать

    Что именно? Об этом написано по ссылке другими словами
     
  19. MiksIr

    MiksIr Активный пользователь

    С нами с:
    29 ноя 2006
    Сообщения:
    2.340
    Симпатии:
    44
    Re: Хеширование паролей - как лучше и безопаснее это сделать

    Что именно чушь?
    Вот это: "то можно и без неё", и вот это: "есть смысл держать соль в коде".
    Вы правда читали сами ссылку?

    Salts exist for a single reason: To make it so that any time (CPU effort) spent cracking a single password hash cannot be amortized across multiple hashes. That means that attacking a single password hash will have no impact on the time it will take attacking another hash. Based on that reason, salts only need to be statistically globally unique.
     
  20. Chushkin

    Chushkin Активный пользователь

    С нами с:
    17 дек 2010
    Сообщения:
    1.060
    Симпатии:
    89
    Адрес:
    Мещёра, Центр, Болото N3
    Re: Хеширование паролей - как лучше и безопаснее это сделать

    Не слушайте умных дядек - они дурят. Надеюсь, не специально. :)
    MD5(password+salt) будет более, чем достаточно. До тех пор, пока злыдни не получат доступ к БД и алгоритму. А когда получат, то будет пофиг какой алгоритм кодирования, хоть супер-пупер+.
    п.с. Это уже не раз обсуждали - поищите на форумах.
     
  21. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.533
    Симпатии:
    623
    Re: Хеширование паролей - как лучше и безопаснее это сделать

    MiksIr
    я основывался на этом
    Обращается внимание, что важнейшее значение имеет криптостойкость алгоритма. От известной соли мало толку при брутфорсе. Можно её вычислять в коде разную для каждого логина и т.п.
     
  22. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.415
    Симпатии:
    1.767
    Re: Хеширование паролей - как лучше и безопаснее это сделать

    Согласен! это еще хитроватее!
     
  23. MiksIr

    MiksIr Активный пользователь

    С нами с:
    29 ноя 2006
    Сообщения:
    2.340
    Симпатии:
    44
    Re: Хеширование паролей - как лучше и безопаснее это сделать

    Соль и вычислительная сложность алгоритма - совершенно разные цели и задачи.
    Вычислительная сложность защищает от брутфорса одного пароля. Соль - защищает пачку паролей

    Т.е. если у нас есть N хешей паролей и время подбора одного хеша t, то без соли подбор _всех_паролей базы - почти тот же t. С солью - N*t.

    Именно по-этому соль должна быть уникальна для _каждого_ пароля в отдельности, т.е. нельзя одну "сделать одну соль и спрятать ее в приложении". Именно по-этому мы не можем отбросить соль как бы сложен алгоритм не был.

    А вопрос, что там сложнее слить - базу или код - вообще не стоит. При защите системы вы должны исходить в данном случае из худшего.
     
  24. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
    Re: Хеширование паролей - как лучше и безопаснее это сделать

    вообще-то, соль защищает от подбора хеша по радужным таблицам.
    если украли сорцы , то в принципе уже неважно, одна соль на всех или уникальная. алгоритм соли будет известен и никак далее не усложнит хакеру жизнь.
    то что вы советуете md5() - это зря. хеширование старое, уже не раз скомпрометированно. много коллизий... в нативном пхп есть sha1, sha2, они более устойчивы к взлому. так что как минимум - от md5 нужно уходить, его время прошло.
     
  25. MiksIr

    MiksIr Активный пользователь

    С нами с:
    29 ноя 2006
    Сообщения:
    2.340
    Симпатии:
    44
    Re: Хеширование паролей - как лучше и безопаснее это сделать

    Вы видите в этих двух выражениях разницу? Я - нет.
    Мда... и проблема не в том, что вы тут пургу несете, а в том, что новичок же не различает - что пурга, а что нет. Коллизии у него, угу.