3

运行Rails4应用程序时,我经常看到机器人正在探查是否运行Wordpress网站。我预计他们正在寻找创建评论垃圾邮件或寻找Wordpress安全漏洞。如何阻止机架级别的请求?

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

ActionController::RoutingError (No route matches [GET] "/wp-login.php") 

什么是Rack中间件在那里我可以阻止此HTTP请求的一个简单的例子?我将如何命名该文件以及它将在Rails应用程序中的位置?

谢谢!

回答

7

您可以使用rack-attack gem将某些请求和来自特定IP地址的请求也列入黑名单。您还可以使用此宝石限制请求一段时间。

请按照github documentation的自述文件在您的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 
+1

非常感谢! – user1515295

+0

'blacklist'在当前版本的rack-attack中已被弃用。这个答案现在应该推荐使用'blocklist'方法。 – danielricecodes

+1

阻止他们为他们服务404是否更快? – Pak