rack_attack 可以将动态创建的 IP 列表(例如管理员最近使用的 IP)列入白名单吗?
Can rack_attack safelist a dynamically-created list of IPs (such as IPs recently used by admins)?
rack_attack gem 提供简单的安全列表 static IP 地址列表,例如:
# config/rack_attack.rb
ok_ips="1.1.1.1, 2.2.2.2, 3.3.3.3"
Rack::Attack.safelist('safelist these IPs') do |req|
ok_ips.include?(req.ip)
end
但是有什么方法可以动态更新列入安全列表的 IP 列表而不需要重新启动服务器才能生效?
例如,如果列入安全列表的 IP 在 Memcache 中的键“OK_IPS”下,则自上次服务器重启 以来 Memcache 中的任何 IP 都将 列入安全列表, 但在下一次服务器重新启动之前,任何新添加的 IP 都不会被列入白名单。
# config/rack_attack.rb
ok_ips = my_cache_read_method("OK_IPS") # "1.1.1.1, 2.2.2.2, 3.3.3.3 etc etc"
Rack::Attack.safelist('safelist these IPs') do |req|
ok_ips.include?(req.ip) # IPs added after server restart wont be included yet
end
显然,如果您将方法移动到块中,它将改为根据请求进行评估:
Rack::Attack.safelist('safelist these IPs') do |req|
ok_ips = my_cache_read_method("OK_IPS") # "1.1.1.1, 2.2.2.2, 3.3.3.3 etc etc"
ok_ips.include?(req.ip) # IPs added after server restart wont be included yet
end
rack_attack gem 提供简单的安全列表 static IP 地址列表,例如:
# config/rack_attack.rb
ok_ips="1.1.1.1, 2.2.2.2, 3.3.3.3"
Rack::Attack.safelist('safelist these IPs') do |req|
ok_ips.include?(req.ip)
end
但是有什么方法可以动态更新列入安全列表的 IP 列表而不需要重新启动服务器才能生效?
例如,如果列入安全列表的 IP 在 Memcache 中的键“OK_IPS”下,则自上次服务器重启 以来 Memcache 中的任何 IP 都将 列入安全列表, 但在下一次服务器重新启动之前,任何新添加的 IP 都不会被列入白名单。
# config/rack_attack.rb
ok_ips = my_cache_read_method("OK_IPS") # "1.1.1.1, 2.2.2.2, 3.3.3.3 etc etc"
Rack::Attack.safelist('safelist these IPs') do |req|
ok_ips.include?(req.ip) # IPs added after server restart wont be included yet
end
显然,如果您将方法移动到块中,它将改为根据请求进行评估:
Rack::Attack.safelist('safelist these IPs') do |req|
ok_ips = my_cache_read_method("OK_IPS") # "1.1.1.1, 2.2.2.2, 3.3.3.3 etc etc"
ok_ips.include?(req.ip) # IPs added after server restart wont be included yet
end