Как ограничить доступ по IP-адресу к определенному пути с Tomcat? - PullRequest
0 голосов
/ 11 ноября 2018

Dears,

Может ли кто-нибудь помочь с ограничением доступа к определенному пути в веб-приложении по IP-адресу?

В настоящее время я применил RemoteAddrValve, и он отлично работает для всех каталогов веб-приложений. На самом деле мне нужно применить это только на конкретном пути.

Высоко ценится, если кто-то может помочь в этом.

<Context><WatchedResource>WEB-INF/web.xml</WatchedResource><Valve className="org.apache.catalina.valves.RemoteAddrValve" deny="some IPs" denyStatus="404"/></Context>

1 Ответ

0 голосов
/ 11 ноября 2018

Как вы упомянули, RemoteAddrValve слишком широк для ваших нужд. Решение состоит в том, чтобы использовать RewriteValve, соответствующий обоим условиям (IP + путь) и правилу, запрещающий трафик. Не забудьте прочитать Tomcat doc , чтобы узнать больше о переписываниях.

Сначала добавьте соответствующий клапан в определение своего хоста в server.xml:

<Valve className="org.apache.catalina.valves.rewrite.RewriteValve" />

Предполагая, что ваше имя хоста является именем по умолчанию (localhost), вам нужно создать файл $CATALINA_BASE/conf/Catalina/localhost/rewrite.config с таким содержанием:

RewriteCond %{REMOTE_ADDR} bad.ip.addr.ess
RewriteRule ^/forbidden-path(.*)$ / [F]

Флаг F отправит запрещенный HTTP-код 403. Вы можете изменить правило по своему усмотрению, например, перенаправить на страницу входа (флаг R).

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

...