Откуда в Rails растут ноги ошибки «No route matches [GET] /HNAP1»?
Здравствуйте
Не так давно начал пользоваться сервисом Rollbar. Периодически, а точнее раз в час начали приходить warning'и такого плана:
ActionController::RoutingError: No route matches [GET] "/HNAP1"
дальше трейс думаю не нужен.
Суть ошибки мне ясна, что не найден маршрут. Гугл говорить про SpamBot которые ищут уязвимости. Урл в интернете пока никак не засвечен, не понятно как боты попали на него. Вопрос мне стоит паниковать или нет? Какие шаги стоит предпринять чтобы избежать последствий?
Паниковать смысла нет. Со временем таких ошибок будет всё больше.
А чтобы перестать беспокоиться и начать жить, надо в routes.rb в конец написать что нибудь типа этого match "*path", :to => "errors#not_found"
Сделать соответствующий контроллер и забыть.
Я так понял "*path" маршрут будет обрабатывать все не найденные маршруты, и адресовывать их к действию контроллера errors#not_found, а в нем уже сделать рендер страницы 404. Но у меня тогда ещё один вопрос: У меня уже есть страница 404 ошибки. И поидее это же исключение должно быть обработанным , или я ошибаюсь?
Еще ошибки связанные с тем что постучались куда то не туда ловятся в application_controller.rb, вот так
rescue_from ActiveRecord::RecordNotFound, :with => :error_not_found
rescue_from AbstractController::ActionNotFound, :with => :error_not_found
rescue_from ActionView::MissingTemplate, :with => :error_not_found
Самое простое, если у вас частный сервис (урл в интернете пока никак не засвечен), это сделать base http authorization в nginx, и по нему уже делать логин в приложении.
В этом случае невалидные запросы будут на уровне nginx отлетать, потому что не смогут пройти авторизацию.