после 3 запросов с одного и того же IP-адреса просто задерживайте каждый ответ от вашего сервера на 2 секунды.
Не используйте сеансы или какой-либо механизм на стороне клиента.Просто используйте временную таблицу для запроса входа в систему, в которой хранятся IP-адрес и номер или неудачная авторизация, которую вы используете для увеличения своего времени.После 15 минут без попытки авторизации с ip, очистите его запись.
С этим, брут-сила может быть "немного" хитрой для плохого парня, может быть, у него есть несколько лет для попытки доступа к вашему сайту)и это сохраняет удобство использования для дислексиков, таких как я, которым может понадобиться повторно ввести свой пароль 4 или 5 раз, прежде чем хороший без ошибок ^^