在Heroku上限制REST请求

时间:2011-06-21 22:09:11

标签: ruby-on-rails rest heroku rate-limiting

为了避免滥用,我想在Rails应用程序中为REST API添加速率限制。在对此进行一些研究后,看起来最好的做法是move this responsibility into the web server而不是在应用程序本身中检查这一点。不幸的是,由于我在Heroku上托管应用程序,因此无法在我的情况下完成此操作,因此无法控制Web服务器的设置。

在这种情况下应该做些什么来阻止滥用API?

2 个答案:

答案 0 :(得分:1)

我认为你要找的是rack-throttlerack-attack宝石。它们都允许限制,rack-attack gem还允许你将人们计时一段时间并阻止某些IP地址,如果他们是多次犯罪者或者你想要阻止请求者的其他原因。< / p>

答案 1 :(得分:0)

考虑在客户端上放置一个cookie,或者更好的是,在用户帐户上记录他​​们上次发出请求的字段(许多身份验证插件已经执行此操作),并且如果它是最近的,则拒绝/延迟他们的请求比如,5秒前(20次请求/秒)。

注意:如果使用单线程Web服务器(例如Mongrel)放入显式延迟而不是拒绝可能会延迟该Mongrel上的其他待处理请求。换句话说,它会影响您的其他用户。可能是一个小的javascript / ajax响应,通知用户他们正在受到速率限制,如果这是合适的话。想想StackOverflow如何阻止您在网站上经常做某些事情。