2017-01-25 13 views
1

Когда пользователь регистрируется на нашем сайте, мы следуем некоторые четко определенные стандарты безопасности:Сбор паролей топологий от пользователей безопасным способом

  • генерированием соль
  • хэш (соль + пароль)
  • хранить хешированный пароль и соль в БД

В последнее время горячей темой является «топология паролей». Например, мы должны запретить пользователям генерировать пароль, например Ullllldd (верхний регистр, 5 раз в нижнем регистре, две цифры), потому что они настолько распространены и более легко взламываются грубой силой, если злоумышленник просто фокусируется на этой топологии. Теперь мы хотели бы получить информацию о наиболее распространенных топологиях, используемых на нашем сайте. Очевидно, что мы не можем использовать хешированную информацию о пароле внутри нашей БД - мы не можем восстановить информацию о пароле из этого хэша. У нас была идея сохранить таблицу топологии, которая заполняется всякий раз, когда регистрируется новый пользователь. например:

Пользователь «joe» регистрируется с паролем «pass». мы видим, что топология «uuuu» уже существует. Если это не так, добавьте его в таблицу базы данных с count = 1. если это произойдет, увеличьте количество на 1. Это, конечно, немного рискованно: если наш db получает компрометацию, наш злоумышленник внезапно знает наши самые распространенные топологии!

Итак, мой вопрос: как собирать и хранить информацию о топологии паролей без создания нового риска для безопасности?

ответ

0

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

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