我在Heroku上有一个Rails应用程序,每秒约有10个请求,这很奇怪,因为现在没人在使用该应用程序。例如,所有这些请求都是针对显然尝试利用安全漏洞的URI。阻止IP在Heroku上的Rails应用程序
http://myapp.com/etc/passwd
和类似的东西。
如何阻止此人访问我的应用程序?有没有快速解决这个问题?
我在Heroku上有一个Rails应用程序,每秒约有10个请求,这很奇怪,因为现在没人在使用该应用程序。例如,所有这些请求都是针对显然尝试利用安全漏洞的URI。阻止IP在Heroku上的Rails应用程序
http://myapp.com/etc/passwd
和类似的东西。
如何阻止此人访问我的应用程序?有没有快速解决这个问题?
也许rack-attack会做你想要的吗?
# Block requests from 1.2.3.4
Rack::Attack.blacklist('block 1.2.3.4') do |req|
# Request are blocked if the return value is truthy
'1.2.3.4' == req.ip
end
我的回应有点晚,但由于您后来询问了有关动态添加IP的问题,不妨分享一下。
从此Github Issue。也许你可以使用缓存存储中IP的存在/存在来确定它是否应该被阻止(vs手动添加IP并重新部署应用程序)。
Rack::Attack.blacklist('block <ip>') do |req|
# if variable `block <ip>` exists in cache store, then we'll block the request
Rails.cache.fetch("block #{req.ip}").present?
end
从应用程序或从控制台,你可以写你的缓存存储。
Rails.cache.write('block 1.2.3.4', true, expires_in: 5.days)
有没有一种方法可以将它设置为从数据库表中动态工作?我怎么能用这个做一个用户黑名单? – OneChillDude 2013-05-06 17:35:59
很可能,但你需要自己设计一下。你可能想看看其他的Rails选项,如果你能找到任何。 – catsby 2013-05-15 20:22:02
文档声明中提供了对Redis的内置支持。 – RandallB 2013-10-24 15:20:16