gpt4 book ai didi

ip-address - Rails 在 Cloudflare 中使用 kickstarter 机架攻击 IP 黑名单

转载 作者:行者123 更新时间:2023-12-04 20:06:27 25 4
gpt4 key购买 nike

Rails 应用程序,使用 Kickstarter 的 rack-attack

在我的 config/rack-attack.rb 文件中,我有:

class Rack::Attack
Rack::Attack.blacklist ('block ip') do |req|
# Request are blocked if the return value is truthy
'68.888.23.22' == req.ip
# req.ip if IPCat.datacenter?(req.ip)
end
end

这一直很好,直到我开始使用 CloudFlare。 req.ip 现在是 Cloudflare IP 与实际最终用户的 IP

我在尝试将用户的 IP 保存到我的服务器日志时遇到了类似的问题(正在保存 Cloudflare IP)。为了解决这个问题,我在我的应用程序 Controller 中添加了以下内容:
module ActionDispatch
class Request < Rack::Request
alias :remote_ip_orig :remote_ip
def remote_ip
@remote_ip ||= (@env['HTTP_CF_CONNECTING_IP'] || remote_ip_orig)
end
end
end

是否有类似的过程来使用 HTTP_CF_CONNECTING_IP 作为机架攻击中的 req.ip?

最佳答案

尝试添加:

class Rack::Attack::Request < ::Rack::Request
def cf_ip
@env['HTTP_CF_CONNECTING_IP'] ? @env['HTTP_CF_CONNECTING_IP'] : ip
end
end

然后你可以使用:
throttle('req/ip', :limit => 300, :period => 5.minutes) do |req|
req.cf_ip
end

关于ip-address - Rails 在 Cloudflare 中使用 kickstarter 机架攻击 IP 黑名单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25299229/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com