Когда стоит хранить пароли в виде открытого текста? - PullRequest
18 голосов
/ 19 января 2010

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

Я использую членство в ASP.NET, которое предоставляет 3 варианта хранения паролей - Открытый текст, Хешированный, Зашифрованный.

Это хорошая идея, чтобы хранить пароли в виде открытого текста, учитывая характер этого приложения?Существуют ли какие-либо юридические проблемы, связанные с хранением паролей в виде открытого текста?

Ответы [ 12 ]

67 голосов
/ 19 января 2010

Никогда.

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

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

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

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

Вы несете ответственность за защиту паролей пользователей, независимо от того, насколько тривиально ваше приложение.

19 голосов
/ 19 января 2010

Вот несколько причин использовать незашифрованные пароли:

  1. Когда вы не уважаете частную жизнь своего пользователя.
  2. Когда вас уволят с работы и вы хотите оставить неизгладимое впечатление.
  3. Когда вы хотите, чтобы ваши основные пользователи были китайскими хакерами.

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

11 голосов
/ 19 января 2010

Нет, не очень хорошая идея, не важно, насколько глупо ваше приложение.

9 голосов
/ 19 января 2010

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

Это когда вы храните пароли в виде открытого текста.

3 голосов
/ 19 января 2010

Полагаю, есть одна ситуация, когда уместно хранить пароли в открытом виде.

Если вы писали приложение для использования в качестве примера «до» в демонстрации того, как писать безопасный код, чтобы вы могли показать, как реализовать методы шифрования и хеширования паролей.

2 голосов
/ 19 января 2010

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

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

Вот запись в блоге о хранении паролей в базах данных стоит прочесть по @ codinghorror

1 голос
/ 19 января 2010

Безопасность и удобство использования находятся на противоположных концах одной и той же флешки. Когда вы делаете ваше приложение простым в использовании, например, возвращая пользователю его пароль, вы делаете его небезопасным. Когда вы подаете заявление, задайте 5 вопросов, образец крови и пароль, которые даже забыл Эйнштейн, у вас проблемы с юзабилити.

1 голос
/ 19 января 2010

За любой достоверной информацией по юридическим причинам обращайтесь к юристу. В США вы должны получить направление от местной ассоциации адвокатов. Я не юрист, и это не юридическая консультация.

Тем не менее, если у вас когда-либо будет утечка данных, вы можете нести ответственность за все, что происходит на вашем сайте, включая возможность нести ответственность за что-либо финансовое или клеветническое. Если пользователь использует пароль на нескольких сайтах, возможно, вы несете ответственность за другие действия на других сайтах. В США вы можете получить иск за что угодно, и мне не ясно, выиграете ли вы такой костюм.

Итак, юридические обязательства потенциально велики. Проконсультируйтесь с юристом перед сохранением паролей в открытом виде.

1 голос
/ 19 января 2010

Никогда. «Природа приложения» не имеет значения. Вы должны спросить себя, что вы думаете о преимуществах хранения его в виде открытого текста. Ожидаете ли вы, что служба технической поддержки подберет телефон и сообщит им свой пароль? Или по электронной почте им, когда они забывают? Это никогда не хорошие идеи.

Существует установленный шаблон дизайна для паролей:

  1. Хэш их
  2. Предоставьте пользователю ссылку Забыли пароль
  3. Пользователь вводит адрес электронной почты, связанный с его учетной записью
  4. Сбросить ссылку или временный пароль по электронной почте на их адрес
  5. Им сразу же предлагается указать новый пароль при посещении ссылки или использовании временного пароля.

Это общий обзор, и это ожидаемый подход. Существуют и другие варианты, такие как предоставление вопросов безопасности.

0 голосов
/ 19 января 2010

Серьезно, я не думаю, что это хорошая идея ...

...