当运行Rails4应用程序时,我经常看到机器人正在探究我是否正在运行Wordpress网站。我希望他们想要制作评论垃圾邮件或寻找Wordpress安全漏洞。
以下是日志中的示例错误:
ActionController::RoutingError (No route matches [GET] "/wp-login.php")
什么是Rack中间件的简单示例,我可以阻止此http请求?我如何命名文件以及它在Rails应用程序中的位置?
谢谢!
答案 0 :(得分:8)
您可以使用rack-attack gem将某些请求和来自特定IP地址的请求列入黑名单。您还可以使用此gem限制请求一定时间。
按照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 :(得分:0)
您可以在下面的代码中使用机架式攻击gem阻止所有匹配的“ .php”。
blocklist('block/php') do |req|
req.ip if /\S+\.php/.match(req.path)
end