在Heroku上运行的Rails应用程序示例。我们每天都会收到某种模式的(似乎是DoS)请求,我想配置中间件来处理这些家伙,而不是Rails应用程序启动来返回
Exception: ActionController::UnknownFormat
或者
Exception: ActionController::InvalidAuthenticityToken
每一个都是。我觉得这不是处理它们的最好方法。
我实现了一个Rack::攻击,看起来是这样的:
class Rack::Attack
blocklist('block ip') do |req|
['a.b.c.d','w.x.y.z'].include? req.ip
end
blocklist('block corrupt paths') do |req|
req.path =~ /\w*((\.aspx)|(\.php)|(\.txt)|(\.zip)|(\.tar)|(\.rar)|(\.com)|(\.sql))$/
end
blocklisted_response = lambda do |env|
# Using 503 because it may make attacker think that they have successfully
# DOSed the site. Rack::Attack returns 403 for blocklists by default
[ 503, {}, ['Blocked']]
end end
虽然它确实阻止了某些类型的批处理请求,这些请求将定期显示在日志中,但它仍然不能很好地完成工作。特别是,我看到每天以突发模式向我们的应用程序发出以下类型的请求:
-
//配置/AspCms_config.asp
-
/主页/favicon.ico
-
/3/法维孔.ico
每个错误请求和报告都是资源消耗和昂贵的。
如何更好地处理这些请求?解决方案在于进一步修改regex吗?还有其他的标准我需要读懂吗?
谢谢。