Ограничение скорости REST запросов на Heroku - PullRequest
10 голосов
/ 22 июня 2011

Чтобы избежать злоупотреблений, я бы хотел добавить ограничение скорости к REST API в нашем приложении Rails.После небольшого исследования этого вопроса, похоже, что лучше всего перенести эту ответственность на веб-сервер , а не проверять это в самом приложении.К сожалению, этого нельзя сделать в моем случае, так как я размещаю приложение на Heroku и поэтому не могу контролировать настройку веб-сервера.

Что нужно сделать в этом случаеостановить злоупотребление API?

Ответы [ 2 ]

1 голос
/ 12 июня 2017

Я думаю, вы ищете драгоценный камень rack-throttle или rack-attack. Оба они позволяют регулировать скорость, а самоцвет rack-attack также позволяет вам рассчитывать на людей на определенный период времени и блокировать определенные IP-адреса, если они являются многократными нарушителями или по любой другой причине, которую вы хотели бы заблокировать запрашивающими.

0 голосов
/ 22 июня 2011

Подумайте о том, чтобы поместить cookie на клиент, или, что еще лучше, поле в учетной записи пользователя, которое записывает последний раз, когда они сделали запрос (многие плагины аутентификации уже делают это), и просто отклонить / задержать их запрос, если он более свежий.чем, скажем, 5 секунд назад (20 запросов в секунду).

ПРИМЕЧАНИЕ. При использовании однопоточного веб-сервера (например, Mongrel) установка явной задержки, а не отклонение может задержать другой ожидающий запрос на этомДворняга.Другими словами, это повлияет на других пользователей.Может быть, небольшой ответ javascript / ajax, чтобы уведомить пользователя, что он ограничен в скорости, если это уместно.Подумайте, как StackOverflow не позволяет вам делать определенные вещи на сайте слишком часто.

...