如何解决Heroku上的速率限制REST请求
| 为了避免滥用,我想在Rails应用程序中为REST API添加速率限制。在对此进行了一些研究之后,最佳实践似乎是将这种责任移至Web服务器,而不是在应用程序本身中进行检查。不幸的是,由于我将应用程序托管在Heroku上,因此无法完成此操作,因此无法控制Web服务器的设置。 在这种情况下,应该采取什么措施来防止滥用API?解决方法
我认为您正在寻找
rack-throttle
或rack-attack
的宝石。它们都允许节流,并且rack-attack
gem还允许您在某些时间段内超时,并阻止某些IP地址(如果他们是多个时间违规者或出于其他原因您希望阻止请求者)。
, 考虑在用户帐户上放置一个cookie,或者更好的是,在用户帐户上放置一个字段,该字段记录他们上次发出请求的时间(许多身份验证插件已经这样做了),如果请求是最新的,则拒绝/延迟他们的请求比5秒钟前(每秒20个请求)多。
注意:如果使用单线程Web服务器(例如Mongrel),则显式延迟而不是拒绝可能会延迟该Mongrel上的其他待处理请求。换句话说,它将影响您的其他用户。如果合适的话,也许是一个小的javascript / ajax响应,以通知用户他们正在限制速率。想一想StackOverflow如何阻止您在网站上过于频繁地执行某些操作。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。