Как ограничить количество запросов POST по IP используя PHP или Apache?

Есть готовый webhook который принимает POST-запросы с указанных IP-адресов, при поступлении запроса проходит проверка данных, после чего они вносятся в MySQL. IP-адреса вносятся руками, но тем не менее, для полной автоматизации процесса, хотелось бы добавить ограничение. Необходимо ограничить количество запросов до 1 в 10 минут используя PHP или Apache. Подскажите как можно это реализовать?
  • Вопрос задан
  • 2110 просмотров
Решения вопроса 1
tregor
@tregor
Senior PHP Backend developer
Если не трогать БД - можно юзать lock файлы!

Алгоритм примерно следующий:
При получении запроса пытаемся открыть файлик $_SERVER['REMOTE_ADDR'] . ".lock", т.е. название это IP клиента ("89.108.13.56.lock", "127.0.0.1.lock" и т.д.)
Далее читаем Unix timestamp из этого файла, если не прошло 10 минут - die().
Если прошло 10 минут и больше, то кидаем в файлик текущий Unix timestamp и работаем дальше!

С БД конечно правильнее было бы, но раз такой случай, то можно использовать мой метод.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
irishmann
@irishmann
Научись пользоваться дебаггером
бд вести учет времени последнего POST. Приходит новый POST, запрашиваем из бд время последнего POST, сравниваем с текущим, если время меньше 10 минут, то шлем POST лесом, иначе обрабатываем
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы