Детали аутентификации пользователя в таблице данных пользователя или отдельно? - PullRequest
1 голос
/ 23 декабря 2010

У меня есть пользовательская таблица, в которой есть все данные пользователя, такие как имя, адрес электронной почты, хэш пароля, пол, город, образование и т. Д. Всего около 45 столбцов.

Вопрос в том, должен ли янормализуйте это в две таблицы, одну для аутентификации пользователя, то есть user_id, email, password_hash, password_salt.

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

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

Ответы [ 2 ]

1 голос
/ 23 декабря 2010

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

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

0 голосов
/ 23 декабря 2010

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

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

Как всегда, измерьте и сравните, как это складывается в вашей конкретной ситуации.

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