Как я должен этически подходить к хранению паролей пользователей для последующего извлечения открытого текста?


по мере того, как я продолжаю создавать все больше и больше веб-сайтов и веб-приложений, меня часто просят хранить пароли пользователей таким образом, чтобы их можно было получить, если/когда у пользователя есть проблема (либо отправить ссылку на забытый пароль, пройти их по телефону и т. д.) Когда я могу горько бороться с этой практикой, и я делаю много "дополнительного" программирования, чтобы сделать сброс паролей и административную помощь возможными без сохранения их фактического пароля.

когда я не могу бороться это (или не может выиграть), то я всегда кодирую пароль каким-то образом, чтобы он, по крайней мере, не хранился в виде открытого текста в базе данных-хотя я знаю, что если моя БД будет взломана, это не займет много времени для преступника, чтобы взломать пароли, так что мне неудобно.

в идеальном мире люди будут часто обновлять пароли и не дублировать их на разных сайтах-к сожалению, я знаю многих людей, у которых есть один и тот же пароль для работы/дома/электронной почты/банка, и даже свободно дал мне его, когда им нужна помощь. Я не хочу быть тем, кто несет ответственность за их финансовую гибель, если по какой-то причине мои процедуры безопасности БД потерпят неудачу.

морально и этически я чувствую ответственность за защиту того, что может быть для некоторых пользователей, их средств к существованию, даже если они относятся к нему с гораздо меньшим уважением. Я уверен, что есть много способов подхода и аргументов для соления хэшей и различных вариантов кодирования, но есть ли одна " лучшая практика’ когда вы должны хранить их? Почти во всех случаях я использую PHP и MySQL, если это имеет какое-либо значение в том, как я должен обрабатывать специфику.

дополнительная информация для "баунти"

Я хочу уточнить, что я знаю, что это не то, что вы хотите сделать и что в большинстве случаев отказ сделать это лучше. Я, однако, не ищу лекцию о достоинствах такого подхода я ищу лучшие шаги, чтобы предпринять, если вы это сделаете подход.

в примечании ниже я отметил, что веб-сайты, ориентированные в основном на пожилых людей, умственно отсталых или очень молодых, могут сбивать с толку людей, когда их просят выполнить безопасную процедуру восстановления пароля. Хотя мы можем найти его простым и обыденным в тех случаях, когда некоторые пользователи нуждаются в дополнительной помощи либо с помощью службы технической помощи им в систему или по электронной почте/отображается непосредственно к ним.

в таких системах отсев из этих демографических данных может хромать приложение, если пользователям не был предоставлен этот уровень помощи доступа, поэтому, пожалуйста, ответьте с такой настройкой в виду.

спасибо всем

Это был вопрос с большим количеством дискуссий и мне понравилось. В конце концов я выбрал ответ, который сохраняет безопасность паролей (мне не нужно будет хранить простой текст или восстанавливаемые пароли), но также позволяет пользовательской базе, которую я указал, войти в систему система без основных недостатков, которые я нашел от нормального восстановления пароля.

Как всегда было около 5 ответов, которые я хотел бы отметить как правильные по разным причинам, но мне пришлось выбрать лучший-все остальные получили +1. Спасибо всем!

также, Спасибо всем в сообществе стека, которые проголосовали за этот вопрос и/или отметили его как любимый. Я принимаю удар 100 голосов в качестве комплимента и надеюсь, что эта дискуссия помогла кому-то еще с тем же беспокойством, что и я.

26 1346

26 ответов: