Как заблокировать запросы на уровне стойки?
Когда я запускаю приложение на Rails4, я часто вижу, как боты проверяют, работаю ли я на сайте Wordpress. Я ожидаю, что они ищут либо спам в комментариях, либо ищут уязвимости безопасности Wordpress.
Вот пример ошибки из журнала:
ActionController::RoutingError (No route matches [GET] "/wp-login.php")
Что является простым примером промежуточного программного обеспечения Rack, где я мог заблокировать этот http-запрос? Как бы я назвал файл и куда бы он пошел в приложении Rails?
Спасибо!
1 ответ
Вы можете использовать гем стойки-атаки, чтобы занести в черный список определенные запросы, а также запросы с определенных IP-адресов. Вы также можете регулировать запросы на определенное количество времени, используя этот драгоценный камень.
Следуйте инструкциям из документации по github, чтобы установить и настроить гем в своем проекте Rails.
Чтобы внести в черный список определенные запросы, вы можете сделать что-то подобное в 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
Вы можете использовать этот код ниже, чтобы заблокировать все совпадения ".php" с помощью гема стойки-атаки.
blocklist('block/php') do |req|
req.ip if /\S+\.php/.match(req.path)
end