Вопрос такая, смотрите пользователь вводит логин и пароль, если не верно необходимо блокировать повторный ввод допустим на минуту, ну что бы он повторно смог авторизоваться только через минуту, как то так. Но основная проблема в том, что пользователь может не в ручную авторизоваться, а через программу, которая будет просто отправлять POST запрос с данными, без всяких браузеров. как я понимаю сессии тут не помогут? sleep() тоже не канает. выходит только через БД, надо записывать IP в базу и время неудачно авторизации и проверять каждый раз или можно как то еще? Очень уж не хочется с БД связываться в этом вопросе.
Я вот тоже думал на днях об этом. Почитал, подумал - лучше через БД. Т.к. сессии и куки не катят как - раз из-за прог.
еще можно на уровне вебсервера это делать - в nginx на lua прекрасно такой функционал пишется (в апачи можно на рерайтере сделать но имхо рерайтер не должен заниматься такой фигней). ну или на уровне сервера "физического" - fail2ban Добавлено спустя 4 минуты 14 секунд: ну и как бы такой смешной момент... а зачем дергать скуэль бедную для таких задач? redis или memcache всяк быстрее будут работать
пришел пост-запрос от клиента, нгинкс смотрит айпишник и время в "базе". если есть и меньше минуты (по задаче тс) - завершение обработки со статусом 403 (запрещено). если нет записи или больше минуты - ничего не делаем и продолжаем обработку запроса обычным образом - клиент может попробовать авторизоваться.
смотря какая бд. есть собственная хэштаблица, есть клиенты к рэдису или мемкэшу. если уж очень надо - есть клиент и к мускулу.
http://habrahabr.ru/post/267955/ подержка js в nginx однако Добавлено спустя 21 секунду: писать можно прямо в конфигах, е6ать-колотить