如何在机架级别阻止请求?
How to Block Requests at the Rack Level?
当 运行 一个 Rails4 应用程序时,我经常看到机器人探测我是否 运行 一个 Wordpress 站点。我预计他们正在寻找创建评论垃圾邮件或寻找 Wordpress 安全漏洞。
这是日志中的错误示例:
ActionController::RoutingError (No route matches [GET] "/wp-login.php")
我可以阻止此 http 请求的 Rack 中间件的简单示例是什么?我将如何命名该文件以及它在 Rails 应用程序中的位置?
谢谢!
您可以使用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
您可以使用下面的代码通过 rack-attack gem.
来阻止所有匹配“.php”
blocklist('block/php') do |req|
req.ip if /\S+\.php/.match(req.path)
end
当 运行 一个 Rails4 应用程序时,我经常看到机器人探测我是否 运行 一个 Wordpress 站点。我预计他们正在寻找创建评论垃圾邮件或寻找 Wordpress 安全漏洞。
这是日志中的错误示例:
ActionController::RoutingError (No route matches [GET] "/wp-login.php")
我可以阻止此 http 请求的 Rack 中间件的简单示例是什么?我将如何命名该文件以及它在 Rails 应用程序中的位置?
谢谢!
您可以使用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
您可以使用下面的代码通过 rack-attack gem.
来阻止所有匹配“.php”blocklist('block/php') do |req|
req.ip if /\S+\.php/.match(req.path)
end