2012-06-11 4 views
1

Я работаю над приложением asp.net, где одним из требований безопасности является то, что приложение должно указывать на «историю паролей» - (помните предыдущие 8 паролей).Разработка безопасности приложений ASP.Net (помните предыдущие пароли)

Я хотел бы знать, есть ли у кого-то опыт разработки таблицы (с использованием SQL 2008) для этой цели. До сих пор я подумывал иметь только одну таблицу и одно поле для предыдущего пароля и одно поле для даты пароля.

Любые другие предложения/рекомендации?

ответ

1

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

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

1

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

1

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

Другие лучшие практики действительно зависят от того, насколько безопасны вы хотите система должна быть. Одна вещь, которую я видел, например, пытается выполнить 10-секундный перебор, используя новый пароль в качестве семени (для существующих инструментов) или базовой итерации. то есть, если вы видите пароль в виде foobar5, попробуйте увидеть, соответствует ли foobar1/2/3/4 любому из старых хэшей.

Смежные вопросы