Это , а не стандартная практика - подсортировать и хэшировать имена пользователей / адреса электронной почты.
Это правда, что злоумышленник не сможет идентифицировать сохраненные имена пользователей / адреса электронной почты, если они были засолены и хэшированы перед хранением. Фактически, никто не сможет получить доступ к именам пользователей / электронным письмам (включая авторизованных пользователей, таких как системный администратор).
- Звучит безопасно, так почему это проблема?
Когда пользователь пытается войти в систему, он отправляет имя пользователя (или адрес электронной почты) и пароль. Поскольку каждая соль уникальна для этого конкретного имени пользователя, единственный способ связать имя пользователя / адрес электронной почты с сохраненным хэшем: имя пользователя / адрес электронной почты - проверять каждую комбинацию соли + хеша, пока не будет найдено либо совпадение, либо каждая запись попытается / отклонена .
Хотя это может быть возможно для базы данных, состоящей из нескольких пользователей, на практике это невозможно, поскольку хеширование требует вычислительных затрат. Представьте себе, что вы должны ждать часы или дни, чтобы служба входа в систему вычисляла каждую комбинацию соль + хеш, только чтобы найти, что имя пользователя было просто написано с ошибкой.
Кроме того, если вы солите имена пользователей, как вы будете предотвращать дублирование?
Имена пользователей должны быть уникальными. Если вы солите имя пользователя, у вас не будет возможности помешать нескольким пользователям использовать одно и то же имя пользователя.
- Какие еще методы могут использовать разработчики для защиты информации?
Наиболее очевидным решением является шифрование базы данных. Хотя это немного выходит за рамки вашего вопроса, В Википедии есть хорошая статья на эту тему.