Apache RedirectMatch - хорошее решение для этих URL-адресов [закрыто]

У меня есть приложение Rails, которое выдает исключения, когда я получаю какие-то странные URL-адреса с большим количеством символов мусора. Например

https://example.com/pages/28-faq-common-questions-answered++++++++++++++++++++++++Result:+%ED%E5+%ED%E0%F8%EB%EE%F1%FC+%F4%EE%F0%EC%FB+%E4%EB%FF+%EE%F2%EF%F0%E0%E2%EA%E8

, я определенно хочу избавиться от этих исключений Rails. Эти запросы никогда не создаются подлинным пользователем.

Я думал использовать RedirectMatch в Apache и просто перенаправлять эти типы запросов на домашнюю страницу сайта навсегда.

Вопрос 1: Это хорошая идея или есть что-нибудь получше?

Вопрос 2: Как создать правила, чтобы сделать это успешно и с достаточной гибкостью, чтобы мне не приходилось писать много правил каждый раз, когда новый робот попадает в мой сайт?

Моя грубая попытка заключалась в следующем, но ничего не произошло. Кажется, это вообще не работает.

 RedirectMatch permanent /\+\+\+\+\+/g https://example.com
-2
задан 26 March 2015 в 11:06
2 ответа

Вопрос 1: Это хорошая идея или есть что-нибудь получше?

Вопрос 2: Как создать правила, чтобы делать это успешно с достаточной гибкостью, чтобы мне не приходилось писать много правил каждый раз, когда новый робот попадает на мой сайт?

Лучшее исправление, , которое также по совпадению решает и №2, - это исправить ваше приложение таким образом, чтобы оно не генерировало исключения, когда оно получает поражены недействительными запросами. Вместо этого он должен проверить все необходимые предварительные условия на входе и изящно выйти из строя в случае, если что-то не так с вводом, зарегистрировав все необходимые детали и отобразив дружественное сообщение об ошибке для пользователя.

Если для по какой-то причине приложение не может быть легко изменено для этого, подумайте, по крайней мере, обернуть его во внешний контейнер, который может перехватывать исключения, регистрировать их подробности,и представить пользователю понятное сообщение об ошибке, не содержащее подробных сведений об исключении. Это не решит основную проблему, но, по крайней мере, предотвратит неудобства пользователя из-за трассировки стека.

Проблема с приложениями, генерирующими исключения, раскрывающие информацию стека, также недавно обсуждалась на нашем родственном сайте Информационная безопасность в вопросе Стоит ли мне беспокоиться, если мой веб-сайт выдает информацию о стеке? . Ответ на этот вопрос, получивший наибольшее количество голосов на данный момент, начинается со следующего:

В производственной среде (в отличие от разработки) трассировки стека и сообщения об ошибках должны записываться в файл, а не выгружаться в него. экран. Это связано с тем, что злоумышленник может узнать о вашей системе что-то, что может помочь скомпрометировать вашу систему.

Если вы исправите приложение для работы таким образом, вам также вообще не понадобятся правила перенаправления.

5
ответ дан 5 December 2019 в 21:17

Вы должны использовать mod_rewrite с этим правилом : RewriteRule \ + \ + \ + \ + \ + [F]

Затем вы вернете клиенту запрещенный код ошибки, который не позволит серверу выполнить более бесполезный (в контексте бесполезного запроса) код.

-3
ответ дан 5 December 2019 в 21:17

Теги

Похожие вопросы