Я отвечаю за аутентификацию в нашем веб-приложении .Net MVC 4, и я столкнулся с проблемой хеширования, хранения и аутентификации паролей.
В настоящее время планируется использовать 2 соли, 1 динамический (для каждого пользователя) и 1 статический (константа веб-приложения), а также сильную функцию хеширования.
Учитывая простую таблицу User, содержащую имя пользователя и пароль:
- Могу ли я хранить соль для каждого пользователя в столбце таблицы пользователей?
Меня беспокоит, что при этом мне придется получать пользователя из базы данных в памяти веб-приложения только с его именем пользователя. Есть ли какая-то атака, при которой это может быть проблематично? В идеале я бы хотел, чтобы это была аутентификация в один шаг / один запрос SQL.
Я слишком сильно волнуюсь? Есть ли альтернатива соли "на пользователя", при которой я все еще могу выполнять одноэтапную аутентификацию?