Необходимо доработать API сделанное на modx, добавить блокировку по IP при частых запросах.
Добрый день.
Отвечать буду только людям с рейтингом на modx.
Описание
Есть мобильное приложение. В данный момент ошибочно (спам) было разослано более 50.000 смсок с приложения на различные номера телефонов.
Задачи
№1) Ограничения по IP backend
Первые 3 запроса с одного IP — раз в минуту.
После этого — раз в час.
И после 3-х в час — блокировка на день.
Нужно будет обновить UI, чтобы показывать ошибку 429 (слишком много запросов) и объяснять пользователю, что нужно подождать перед следующей попыткой.
№2) Ограничения по телефону — То же самое, только по номеру телефона.
В UI тоже нужно показывать ошибку 429, чтобы пользователи понимали, что нужно подождать.
Отвечать буду только людям с рейтингом на modx.
Описание
Есть мобильное приложение. В данный момент ошибочно (спам) было разослано более 50.000 смсок с приложения на различные номера телефонов.
Задачи
№1) Ограничения по IP backend
Первые 3 запроса с одного IP — раз в минуту.
После этого — раз в час.
И после 3-х в час — блокировка на день.
Нужно будет обновить UI, чтобы показывать ошибку 429 (слишком много запросов) и объяснять пользователю, что нужно подождать перед следующей попыткой.
№2) Ограничения по телефону — То же самое, только по номеру телефона.
В UI тоже нужно показывать ошибку 429, чтобы пользователи понимали, что нужно подождать.
Комментарии: 3
Здравствуйте. Готового решения конечно же нет в рамках MODX. Но они есть в мире PHP.
Для регулирования частоты запросов к API в PHP можно использовать библиотеку php-ratelimiter или symfony/rate-limiter. Оба инструмента предоставляют удобные способы контроля и ограничения количества запросов за определённый промежуток времени.
К примеру вот так используется php-ratelimiter
Для регулирования частоты запросов к API в PHP можно использовать библиотеку php-ratelimiter или symfony/rate-limiter. Оба инструмента предоставляют удобные способы контроля и ограничения количества запросов за определённый промежуток времени.
К примеру вот так используется php-ratelimiter
use RateLimiter\RateLimiter;
use RateLimiter\Storage\FileStorage;
$storage = new FileStorage('/path/to/storage');
$limiter = new RateLimiter($storage, 100, 3600); // 100 запросов в час
$key = 'user_ip_or_api_key'; // Уникальный идентификатор (например, IP или API-ключ)
if ($limiter->check($key)) {
// Запрос разрешён
$limiter->increment($key);
} else {
// Лимит исчерпан
http_response_code(429);
echo 'Too Many Requests';
exit;
}
Так а в самом API разве нет ограничений? По любому должна быть какая-то защита у сервиса
Они свой сервер защищать хотят видимо
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.