Задать вопрос

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

Есть готовый webhook который принимает POST-запросы с указанных IP-адресов, при поступлении запроса проходит проверка данных, после чего они вносятся в MySQL. IP-адреса вносятся руками, но тем не менее, для полной автоматизации процесса, хотелось бы добавить ограничение. Необходимо ограничить количество запросов до 1 в 10 минут используя PHP или Apache. Подскажите как можно это реализовать?
  • Вопрос задан
  • 2256 просмотров
Подписаться 1 Средний Комментировать
Помогут разобраться в теме Все курсы
  • Skillfactory
    Профессия Fullstack веб-разработчик на JavaScript и PHP
    20 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Решения вопроса 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 лесом, иначе обрабатываем
Ответ написан
Ваш ответ на вопрос

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

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