Вопрос о том, как хранить пароли пользователей веб-сайтов в таблицах, несколько раз поднимался на SO, и общий совет - хранить хэш пароля, в конечном итоге хеш HMAC. Это прекрасно работает для обычной проверки подлинности или для проверки подлинности на основе форм (на самом деле то же самое). Моя проблема в том, что я должен также предоставить дайджест-аутентификацию, предназначенную для автоматизированных инструментов, подключающихся к моему сервису. Я смотрел на эту проблему, и, как я вижу, единственный хеш, который я могу сохранить, это HA1 часть Дайджеста : хеш username : realm : password
. Таким образом, я могу проверить как Basic / формы и дайджест.
Моя проблема в том, что я не вижу в этом никакой пользы. Теперь злоумышленник не может использовать обычную проверку подлинности или проверку подлинности на основе форм, если он завладевает моей таблицей паролей (поскольку он имеет только хешированное значение и ему нужно отправить открытый пароль), но ничто не мешает ему использовать дайджест-проверку подлинности и дать действительный ответ. на мой сервисный вызов: он просто начинает с предварительно вычисленного HA1 из таблицы и продолжает обработку ответа оттуда (то есть, то же самое, что я бы сделал, чтобы проверить пользователя на бэкэнде).
Я что-то упустил? Означает ли добавление требования к дайджесту, в основном, хранение хешированных паролей в качестве запрета от безопасности, а в лучшем случае - запутывания?