Зачем вам когда-нибудь хотеть хранить в базе данных открытый текст или зашифрованный (не хешированный) пароль? - PullRequest
5 голосов
/ 16 сентября 2010

Я слышал немало причин для хранения хешированных паролей в базе данных.Однако в API аутентификации почти всегда есть варианты хранить пароли в виде простого текста или в зашифрованном виде.

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

Примечание Для ясности я знаю, что хранение нехешированных паролей почти всегда плохо . (Насколько я знаю в любом случае) Мой вопрос: почему большинство аутентификацийAPI включают опции для хранения паролей в виде зашифрованного или простого текста.

Ответы [ 9 ]

6 голосов
/ 16 сентября 2010

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

6 голосов
/ 16 сентября 2010

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

Конечно, альтернатива для системы состоит в том, чтобы просто сбросить пароль на что-то новое и отправить вам новый пароль.

5 голосов
/ 16 сентября 2010

Может быть, вы хакер и хотите использовать или продать их? It'll be hilarious the first few times this happens.

1 голос
/ 17 сентября 2010

Я несколько раз сталкивался со следующим аргументом:

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

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

1 голос
/ 16 сентября 2010

1) Большинство протоколов проверки подлинности Challenge-Response требуют, чтобы сервер знал пароль в виде открытого текста. Есть исключения, но они непопулярны и трудно реализуемы.

2) Хранение паролей позволяет восстановить пароль.

1 голос
/ 16 сентября 2010

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

Жизненно важно понимать, что шифрование паролей не защитит ваш сайт, оно можетзащищайте только свои пароли.

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

0 голосов
/ 16 сентября 2010

Единственная «хорошая» причина, которую я могу придумать, заключается в том, что клиент платит вам за разработку приложения или ваш менеджер настаивает на этом.Я не могу думать о каких-либо технических причинах этого.

0 голосов
/ 16 сентября 2010

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

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

Это, очевидно, не тот же пароль, что и для основной службы, но в любом случае это "пароль типа".

0 голосов
/ 16 сентября 2010

Конечно, вы можете хранить все пароли в виде простого текста в вашем хранилище (например, в базе данных). Но это не рекомендуется. Если кому-то удастся взломать ваш сервер и получить ваши данные из базы данных, он также получит каждый пароль. Даже простое хранение пароля, хешированного обычными методами, такими как md5, в этом случае не совсем удачно. Потому что есть радужные таблицы (поищите в Google) для поиска паролей.

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

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