Концептуальное моделирование SQL - Может ли пароль быть свойством сущности?
В настоящее время я делаю концептуальную модель для проекта, и одна из моих сущностей - ПОЛЬЗОВАТЕЛЬ. Это ключ userID, а его свойства включают firstName, lastName, emailAdr и userName. После реализации проекта у пользователя будет пароль, который заставляет меня задуматься, стоит ли мне добавлять его в качестве свойства... или это может поставить под угрозу конфиденциальность?
2 ответа
Концептуально вы должны сохранить пароль для пользователя, поэтому имеет смысл хранить его в пользовательском объекте.
Однако, как указывает @stepio, когда вы смотрите на то, как вы это реализуете, сохранение хеша (на самом деле, надежного безопасного хеша) является хорошим способом сохранить его, чтобы он не был раскрыт в случае компрометации.
С другой стороны, если вы используете ORM, например, для создания экземпляра сущности из таблицы, и у вас есть некоторая обеспокоенность по поводу хэша, проходящего через приложение, вы можете поместить настоящий хеш в отдельную таблицу и сохранить ссылку на это в таблице пользователя. Что-то вроде теневого пароля Unix.
Подумайте о сохранении хешированного пароля вместо простого текста.
Для реализации аутентификации вам просто нужно хэшировать ввод пользователя и проверять хэши.