速率限制以防止DOS攻击(Heroku)

时间:2011-10-23 14:04:19

标签: ruby-on-rails-3 heroku

我的应用程序中有2个POST,1个PUT和1个DELETE API。我的应用程序部署在Heroku上。我想对这些API进行速率限制,但仅限于防止DOS攻击或者有人在无限循环中调用API。这种情况的理想速率限制是多少?例如。 x每分钟,每小时y。 x和y的想法数字是什么?

2 个答案:

答案 0 :(得分:3)

实现这一目标的一种方法是放入3scale API插件(https://github.com/3scale/3scale_ws_api_for_ruby),这会强制执行速率限制,使用外部基础架构进行分析等。

通过这种方式,您可以对单个用户进行评级,并为每个用户设置不同的配额(以及所有注册等)。

它不会严格阻止真正的DOS,因为即使是未经处理的请求仍然会到达你 - 但它会阻止它们进入你的堆栈+切断那些先造成伤害的人。

答案 1 :(得分:0)

这实际上取决于您的应用。

1)这取决于您的应用程序的“重”程度:

如果您的每个请求都是处理器耗尽和/或对数据库造成大量打击,那么您需要设置一个下限,因为每个请求都“昂贵”。如果您的应用程序快速有效,那么您有更多的操作空间,并且您可以设置更高的API限制。

2)这取决于您的应用的用例。

您的应用是否需要大量API匹配才能使用? API限制如何影响您的应用提供的功能?

3)这取决于你拥有多少处理器。

Heroku允许您通过设置web dynos和worker dynos来扩展应用程序。您拥有的越多,您就越能提供高API限制。

在任何情况下,如果你想阻止有人对你进行DOS操作或在无限循环中调用你的API,这是错误的方法,因为API限制会影响好人和坏人。更好的方法是检测不良行为并做出适当的响应(即在有限的时间内拒绝违规的IP地址)。