4

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

这是日志中的示例错误:

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

什么是 Rack 中间件的简单示例,我可以在其中阻止此 http 请求?我将如何命名该文件以及它在 Rails 应用程序中的位置?

谢谢!

4

2 回答 2

8

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

按照github 文档中的自述文件在 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
于 2015-12-07T05:24:24.393 回答
0

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

blocklist('block/php') do |req|
    req.ip if /\S+\.php/.match(req.path)
end
于 2018-12-10T06:13:40.300 回答