2010-01-19 4 views
18

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

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

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

+39

** НИКОГДА ** Период. – Amarghosh

+1

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

+4

Просто чтобы вы не поняли неправильную идею из некоторых ответов, это НЕ глупый вопрос. Пока вы не поехали по этой дороге, вы просто не знаете. :) –

ответ

67

Никогда.

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

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

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

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

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

+0

Я согласен с большинством, но есть приложения например mint.com, где вся их бизнес-модель зависит от хранения вашего пароля в восстанавливаемом формате. Но да, для этого парня он должен сбросить пароли. – brien

+0

@brien, mint.com может хранить зашифрованные пароли в БД и восстанавливать/расшифровывать их по мере необходимости. – notnoop

+3

@notnoop - Да, дело Монетного двора такое же, как и все, кто должен защищать конфиденциальные данные (банковские записи, личные данные и т. Д.). Эти данные просто * происходят *, чтобы быть паролями. Это не проблема на самом деле - проблема управления паролями, как таковая. –

11

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

19

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

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

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

+8

...но, пожалуйста, сообщите мне имя вашего веб-сайта/приложения * сначала *, просто я могу делать бизнес * с кем-то другим *. –

0

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

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

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

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

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

9

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

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

+3

Может быть, если бы у него была говядина с его работодателем? – JohnFx

3

Я полагаю, что существует одна ситуация, когда хранение паролей в ясном тексте является подходящим.

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

+0

HAHAHA ... или «программирование malpractice 101» – Marcelo

2

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

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

Вот блоге на storing passwords in databases стоит читать по @codinghorror

0

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

0

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

1

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

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

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

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

1

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

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

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

1

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

+0

В этом случае нет. Самый простой способ обеспечить восстановление входа в систему - отправить по электронной почте пользователю одноразовую ссылку на форму «выбрать новый пароль». Это на самом деле * проще * использовать, чем напоминание пароля или (конечно) новый случайно сгенерированный пароль. – jammycakes

+0

Этот метод имеет тенденцию к середине удобства и безопасности. Банковское законодательство требует, чтобы банки использовали 2 формы безопасности в своих приложениях, что является одной из причин, по которой они так часто используют вопросы безопасности. –

Смежные вопросы