Вы использовали бы одну или две таблицы для имени пользователя и пароля?

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

10
задан Daniel Vassallo 28 May 2010 в 06:43
поделиться

5 ответов

Нет, я бы просто сделал это:

id, имя пользователя, пароль.

Где id - это просто автоинкремент, имя пользователя - это varchar равное 20 (или около того, в зависимости от ваших потребностей), а пароль - это хешированный пароль MD5 или SHA1 с солью.

Использование для этого двух таблиц просто не имеет смысла. Затем вам нужно работать с объединениями, чтобы получить данные. И это просто ненужная ноша.

9
ответ дан 3 December 2019 в 21:58
поделиться

Я не согласен с другими людьми - поместите информацию для аутентификации в отдельную таблицу и в максимально возможной степени полностью исключите аутентификацию из вашего приложения. Тебе все равно. Подумайте о siteminder и тому подобном - ваше веб-приложение не имеет никакой информации о том, как аутентифицируется пользователь. Пароль, смарт-карта и т. Д. (То же самое с Kerberos или Active Directory в настольных приложениях.)

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

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

1
ответ дан 3 December 2019 в 21:58
поделиться

Нет, это не безопаснее. Просто убедитесь, что ваши пароли соленые + хешированные, прежде чем сохранять их в БД.

0
ответ дан 3 December 2019 в 21:58
поделиться

Нет, я не понимаю, как это может сделать его безопаснее.

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

Дополнительная литература:

6
ответ дан 3 December 2019 в 21:58
поделиться

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

Просто убедитесь, что вы храните пароли в хешированной форме, используя безопасный хэш, такой как SHA-2 и соль. Не храните их в виде обычного текста и (ИМХО) не храните их в зашифрованном виде.

0
ответ дан 3 December 2019 в 21:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: