Просто чтобы быть ясным, sha1
, соленый или сырный луковый аромат, это не шифрование, это называется хешированием.Это односторонняя функция с уникальным выходом для уникального.Идея использования соленого хэша для паролей в вашей базе данных имеет два аспекта:
- Хэш является односторонней функцией, поэтому никто, имеющий доступ к базе данных, не может определить, какиепароли есть.Очень хорошая практика.
- Соленая часть, предполагая, что вы хэшируете имя пользователя + пароль + некоторое нежелательное, означает, что каждая комбинация имя пользователя + пароль должна быть уникальным хэшем.Это затрудняет атаки / сокращения по словарю через предварительно вычисленные хэши, потому что большинство людей не имеют словаря
ninefingers:stackoverflow!!:{insertcommonwordhere}
, лежащего вокруг.Это не мешает им генерировать его, просто делает его более неудобным.
Теперь мы выяснили это, да, если пользователь забывает свой пароль, вы не можете отправить его ему по электронной почте, потому чтоВы не можете поменять хэш.По замыслу.
Вместо этого вы хотите, чтобы пользователь мог безопасно сбросить свой пароль.Простейшая форма этого заключается в том, что, если пользователь вводит свой адрес электронной почты, вы отправляете ему по электронной почте ссылку на ваш сайт, включающую в свои параметры уникальный токен однократного использования, действительный в течение короткого промежутка времени.
Другие варианты?Сгенерируйте им пароль и отправьте им по электронной почте.Шлюз Uk Gov't Gateway здесь, в Великобритании, делает кое-что довольно интересное: веб-страница содержит половину пароля, электронная почта - другую.Вам нужно и то, и другое снова войти в систему.
Теперь вопрос на миллион долларов: это безопасно?Нет, ничего не безопасно.Там нет 100% безопасности.Когда-либо.Этот особый метод хранения паролей повышает безопасность, потому что:
- администраторы баз данных не могут легко злоупотребить своим доступом к пользовательской таблице;
- вредоносные запросы, которые каким-то образом
select * from table users;
не могут легко прочитатьэти пароли тоже.
Но как только вы полагаетесь на возможность электронной почты пользователя в качестве метода безопасного общения, вы полагаетесь на:
- secure;
- что их электронная почта не отслеживается.
Тогда возникает вопрос - насколько вам действительно нужно быть защищенным?Внедрение решения для отправки по электронной почте ссылки сброса будет работать в большинстве случаев, потому что на самом деле это недостаточно ценные цели.