Задать вопрос
@greenTransistor

Следует ли разделять авторизационные данные (соль, хеш пароля) и данные учетной записи пользователя в разные таблицы MySQL?

Обычно в своих мелких проэктах я делаю отдельные таблицы, что имеет следующие преимущества:
- можно разделять доступ к этим данным и защитить соль и хеш от похищения при SQL-инъекции, так как в сценариях, отличных от входа и регистрации, доступ к ним не нужен и пользователю БД, используемому по умолчанию, можно их не давать;
- есть возможность создавать системных/вспомагательных пользователей, из-под которых нельзя авторизоваться;
- немного большее быстродействие в типичных сценариях.
Но в больших проектах, которые я видел, обычно была одна таблица, и кроме того разделение данных со связью один к одному в разные таблицы не считается хорошей практикой. Преимущества одной таблицы я вижу следующие:
- проще поддерживать согласованность данных;
- меньшая избыточность и, как следствие, меньшее занимаемое пространство.
Вряд ли есть универсальный ответ, поэтому в каких случаях лучше иметь одну таблицу, а в каких - две? Какие ещё есть преимущества и недостатки в обеих схемах БД?
  • Вопрос задан
  • 241 просмотр
Подписаться 1 Оценить 1 комментарий
Пригласить эксперта
Ответы на вопрос 1
Sanasol
@Sanasol
нельзя просто так взять и загуглить ошибку
Пожалуй ни разу не видел такого варианта.
Смысла вообще не вижу в этом.

можно разделять доступ к этим данным и защитить соль и хеш от похищения при SQL-инъекции

хакер-то не догадается поискать пароль и даже не заметит что его нет во взломанных данных?)
Или инъекция не распространяется на остальные таблицы магически?)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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