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