Какой наилучший рекомендуемый алгоритм для шифрования паролей в php/mysql
Лучший хэш-алгоритм для использования в PHP/MYSQL
Ответ 1
Я бы использовал функцию php crypt()
, потому что в любом случае пароль не будет расшифрован. Когда мне нужно проверить введенный пароль, мне просто нужно зашифровать его и сравнить два результата.
Ответ 2
SHA-512 с солью - хороший и безопасный способ хеширования пароля. Если это не доступно, у вас есть SHA-1, но в наши дни безопасность считается немного слабой, особенно если вы не используете соль.
Ответ 3
Большинство людей согласны с тем, что SHA - это не лучший способ, так как эти алгоритмы плохо сопротивляются атакам грубой силы. Лучше использовать bcrypt, scrypt или PBKDF2 см. Этот Q & A.
Ответ 4
-
Современное мышление заключается в использовании алгового аллога SLOW. Это приводит к тому, что "грубые раны" проводят много времени, производя все эти попытки.
-
Намного разумнее отслеживать запросы URI по IP и блокировать с объяснением, когда 5 попыток входа не срабатывают с одного и того же IP-адреса в течение любого 5-минутного периода.
-
Банковское умение по-прежнему состоит в том, чтобы делать # 1, # 2, а также требовать вторичного прохода после первого успешного завершения. Тройной отказ при втором вызове приводит к блокировке.
Уровень 3 безопасности очень, очень сильный. Вероятно, слишком сильный.
Ответ 5
Там есть достойная статья здесь - короткий ответ, используйте crypt()
и убедитесь, что вы используете salt.
Ответ 6
Существует множество опций - см. php hash docs для полного списка.
Скорость не является преимуществом, поэтому использование sha-512 или джакузи - хорошая идея. Вам не нужно хранить всю длину хэша в mysql, например, вы можете хэшировать что-то в виде вихря, длина которого составляет 128 символов, и сохранить только первые 64 символа для эффективности.
Ответ 7
Miki725 вызывает интересные моменты с статья Матасано Хотя sha512 лучше, чем md5 криптографически, bcrypt превосходит их всех, потому что он медленнее и, следовательно, стоит больше атаковать. Медленнее - это плохо, интернет уже медленный, он в миллионы раз медленнее кэша процессора и в тысячи раз медленнее, чем диск. Выполнение проверки пароля занимает 200 мс вместо 1 мс для вычисления, не будет беспокоить всех пользователей.
Самое главное, не забудьте использовать nonce, который произвольно сгенерирован и отличается для каждого пользователя.
bcrypt будет неоптимальным в PHP, потому что php интерпретируется, и это дает злоумышленнику некоторое преимущество, но есть fooobar.com/info/1300/...