Поскольку я продолжаю создавать все больше и больше веб-сайтов и веб-приложений, мне часто просят хранить пароли пользователей таким образом, чтобы их можно было получить, если/когда у пользователя возникла проблема (либо отправить по электронной почте ссылку на забытый пароль, пройти их через телефон и т.д.). Когда я могу с горькой борьбой с этой практикой, и я делаю много "дополнительного программирования", чтобы сделать сброс пароля и административную помощь без сохранения их фактического пароля.
Когда я не могу бороться с ним (или не могу выиграть), я всегда кодирую пароль каким-то образом, чтобы он, по крайней мере, не был сохранен как открытый текст в базе данных, хотя я знаю, что если моя БД будет взломана, t возьмите много для виновника взломать пароли, так что это делает меня неудобным.
В идеальном мире люди часто обновляли пароли, а не дублировали их на разных сайтах - к сожалению, я знаю МНОГО людей, которые имеют один и тот же пароль для работы/дома/электронной почты/банка, и даже свободно предоставляли его мне, когда им нужно помощь. Я не хочу быть ответственным за их финансовую кончину, если по каким-то причинам мои службы безопасности БД не работают.
Морально и этически я чувствую ответственность за защиту того, что может быть для некоторых пользователей, их средств к существованию, даже если они относятся к нему с гораздо меньшим уважением. Я уверен, что есть много путей для подхода и аргументов, которые нужно сделать для хэшей соления и разных вариантов кодирования, но есть ли одна "лучшая практика, когда вы должны их хранить? Почти во всех случаях я использую PHP и MySQL, если это имеет какое-то значение в том, как я должен обрабатывать специфику.
Дополнительная информация для Bounty
Я хочу уточнить, что я знаю, что это не то, что вы хотите сделать, и что в большинстве случаев отказ сделать это лучше всего. Тем не менее, я не ищу лекции о достоинствах этого подхода. Я ищу наилучшие шаги, чтобы предпринять этот подход.
В приведенной ниже заметке я отметил, что сайты, ориентированные в основном на пожилых людей, умственно отсталых или очень молодых, могут запутать людей, когда их попросят выполнить безопасную процедуру восстановления пароля. Хотя мы можем найти это простым и обыденным в тех случаях, некоторые пользователи нуждаются в дополнительной помощи либо иметь сервисную технику, либо помогать им в системе, либо отправлять ее по электронной почте/отображаться непосредственно им.
В таких системах скорость извлечения из этих демографических данных могла бы испортить приложение, если пользователям не был предоставлен такой уровень доступа, поэтому, пожалуйста, ответьте с такой настройкой.
Спасибо всем
Это был забавный вопрос с большим количеством дебатов, и я наслаждался этим. В итоге я выбрал ответ, в котором сохраняются безопасность паролей (мне не нужно будет хранить текст или восстанавливаемые пароли), но также позволяет указать базу пользователей, которую я указал для входа в систему, без основных недостатков, которые я нашел из нормальное восстановление пароля.
Как всегда было около 5 ответов, которые я хотел бы отметить по-разному по-разному, но мне нужно было выбрать лучший - все остальное получили +1. Спасибо всем!
Кроме того, спасибо всем в сообществе Stack, которые проголосовали за этот вопрос и/или отметили его как фаворита. Я принимаю 100 голосов в качестве комплимента и надеюсь, что эта дискуссия помогла кому-то еще с той же озабоченностью, что и я.