Ruby on rails 如何在机架级别阻止请求?

Ruby on rails 如何在机架级别阻止请求?,ruby-on-rails,ruby-on-rails-4,rack,middleware,rack-middleware,Ruby On Rails,Ruby On Rails 4,Rack,Middleware,Rack Middleware,当运行Rails4应用程序时,我经常看到机器人探测我是否在运行Wordpress站点。我预计他们正在寻找创建评论垃圾邮件或寻找Wordpress安全漏洞 下面是日志中的一个错误示例: ActionController::RoutingError (No route matches [GET] "/wp-login.php") 什么是机架中间件的一个简单示例,我可以在其中阻止此http请求?我将如何命名该文件以及它在Rails应用程序中的位置 谢谢大家! 您可以使用gem将某些请求以及来自特定i

当运行Rails4应用程序时,我经常看到机器人探测我是否在运行Wordpress站点。我预计他们正在寻找创建评论垃圾邮件或寻找Wordpress安全漏洞

下面是日志中的一个错误示例:

ActionController::RoutingError (No route matches [GET] "/wp-login.php")
什么是机架中间件的一个简单示例,我可以在其中阻止此http请求?我将如何命名该文件以及它在Rails应用程序中的位置

谢谢大家!

您可以使用gem将某些请求以及来自特定ip地址的请求列入黑名单。您还可以使用此gem在一定时间内限制请求

按照中的自述在Rails项目中安装和设置gem

要将某些请求列入黑名单,可以在
app/config/initializers/rack_attack.rb
文件中执行类似操作:

# Block logins from a bad user agent
Rack::Attack.blacklist('block bad UA logins') do |req|
  req.path == '/wp-login.php' && req.get? && req.user_agent == 'BadUA'
end

您可以使用下面的代码使用rack attack gem阻止所有匹配的“.php”

blocklist('block/php') do |req|
    req.ip if /\S+\.php/.match(req.path)
end

黑名单
在当前版本的
机架攻击
中已被弃用。这个答案现在应该建议使用
区块列表
方法。阻止他们比为他们提供404更快吗?