3

При запуске приложения Rails4 я часто вижу, как боты исследуют, работает ли я на сайте Wordpress. Я ожидаю, что они ищут возможность создания спама комментариев или поиска уязвимостей Wordpress.Как заблокировать запросы на уровне стойки?

Вот пример ошибки из журнала:

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

Что представляет собой простой пример Rack промежуточного слоя, где я мог бы блокировать этот запрос HTTP? Как я могу назвать файл и где он будет работать в приложении Rails?

Спасибо!

ответ

7

Вы можете использовать rack-attack gem для вставки в черный список определенных запросов и запросов от определенных IP-адресов. Вы также можете подавать запросы на определенное количество времени, используя этот драгоценный камень.

Следуйте за чтением от github documentation, чтобы установить и настроить драгоценный камень в проекте 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 
+1

высоко ценится! – user1515295

+0

'blacklist' устарел в текущей версии' rack-attack'. Этот ответ теперь должен рекомендовать использовать метод «blocklist». – danielricecodes

+1

Быстрее ли блокировать их, чтобы служить им 404? – Pak