У вас есть компромисс между информации, предоставленной пользователем и защиты от атак.
Если вы запрашиваете свою базу данных, проверяя соответствующие логин и пароль, и она терпит неудачу, вы можете сообщить пользователю только, что логин или пароль ошибочны. Не помогает, если он не помнит, какой логин вы использовали для регистрации (были ли они «Arkh01», «arkh» или «Arkh1»).
Если вы запрашиваете свою базу данных для входа в систему, получая хэш и соль, вы можете сообщить пользователю, если логин неверен или пароль. Пользователь счастлив. Но кто-то, атакующий ваш сайт, может легко узнать, что пользователь «aa» не существует, но пользователь «ab» делает.Поскольку многие веб-сайты предоставляют доступ к списку пользователей, вы почти всегда можете отказаться от этой проблемы.
Для предотвращения грубой силы регистрируйте количество попыток, сделанных IP-адресом или при входе в систему, и заблокируйте дальнейшую попытку после 5-и ошибок. Предпочтительно блокировать используемый IP-адрес, а не учетную запись.
О хранении хеширования паролей, используйте соль и HMAC + SHA512 в PHP: hash_hmac
+1 Кажется, вполне обоснованная методологией вопроса ко мне. Я не понимаю нижний предел – Dathan
Потому что некоторые люди глупы? – animuson