Rails 机架攻击油门如何工作?

问题描述 投票:0回答:2

假设我有这样的油门:

throttle('emails/ip', :limit => 5, :period => 24.hours) do |req|
  if req.path == '/users/check_email_availability' && req.post?
    req.ip
  end
end

如果有人在受到限制后继续尝试访问该链接,会发生什么?他们还会被封锁 24 小时吗?或者 gem 只会查看他们最后 5 个请求?他们什么时候变得不受限制?

ruby-on-rails ruby rackattack
2个回答
1
投票

您返回

truthy
值的每个请求都会使用时间戳进行缓存,即使请求被阻止也是如此。要确定请求是否被阻止,
rack-attack
会计算
:period
时间范围内的请求。

所以

rack-attack
不会阻塞
:period
。相反,它会计算
:period
内的所有请求,如果该计数大于
:limit
,则该请求将被阻止。


0
投票

在您的示例中,24 小时内请求金额的限制设置为 5。如果有人在第一个小时内达到限制,Rack Attack 将在此期间的剩余时间内(即 23 小时)阻止进一步的请求。

© www.soinside.com 2019 - 2024. All rights reserved.