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

14

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

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

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

Пьер Арло
источник
Подумайте, нужно хранить все PII (личную информацию) в защищенном виде. Это зашифрованные данные, которые должны понадобиться приложению (например, отправить электронное письмо с подтверждением), и данные хеша / соли, используемые для аутентификации (например, пароль). Плюс, конечно, защита базы данных в этом случае обязательна.
Илан Хуберман
Вы можете настроить отдельное приложение, которое хранит только электронную почту + пароли (+ другие личные данные), например. Вы можете использовать это для отправки электронных писем, вызывая его, например, с внутренним параметром api: localEmailServer / sendInvite / 123, где 123 = идентификатор пользователя. Вы можете сделать то же самое для входа в систему, публикации на localEmailServer / login, который может возвращать true или false. Таким образом, ваше приложение может быть взломано, но у него не будет адресов электронной почты. Если вы ограничите количество запросов к этой службе, она станет более защищенной, поскольку вы не подвержены таким вещам, как SQL-инъекции в этой части.
Люк Франкен

Ответы:

9

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

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

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


Аналогичный вопрос о Stackoverflow: стоит ли шифровать адреса электронной почты в базе данных?

Manlio
источник
Не видел этот вопрос! Кстати, это старый вопрос, но я считаю, что теперь он должен принадлежать программистам.
Пьер Арло
3
@PierreArlaud: На самом деле все было бы лучше в информационной безопасности, так как в действительности это не имеет никакого отношения к программированию.
Blrfl
На самом деле есть возврат на шифрование писем. Если вы не храните ключи в одной и той же скомпрометированной базе данных, вы лишаете злоумышленника возможности использовать электронные письма. Помните, что электронная почта интенсивно используется для активации учетных записей и изменения учетных данных.
NoChance
2

Я думаю, что вы уже все сказали.

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

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

Mawg говорит восстановить Монику
источник
6
И? И? Ожидание убивает меня :)
Пьер Арло
И что? Что такое тревожный? Шифрование (дешифрование) в вашем приложении перед сохранением в базе данных означает, что не стоит беспокоиться, если база данных будет украдена, взломана и т. Д. Но, если вы хотите отправлять электронные письма, вы можете расшифровать получателей электронной почты из базы данных. Это не то, что вы хотели ? Я что-то пропустил?
Mawg говорит восстановить Монику
2
Просто комментарий к последнему символу вашего ответа: D
Пьер Арло
Я пытаюсь найти то, что ваш ответ говорит, что Манлио не сделал. По сути, идея состоит в том, чтобы иметь обратимый хеш электронной почты, такой как соленый хеш. Или, может быть, вы имели в виду что-то совершенно другое?
Пьер Арло
Извините, я думаю, что мы представили в то же время.
Mawg говорит восстановить Monica