Обнаружение прокси в Java / JSP - PullRequest
1 голос
/ 20 января 2012

Я работаю над проектом, используя Java , в котором IP-адрес будет идентификатором клиента / пользователя. Поэтому я сталкиваюсь с одной проблемой: когда пользователь может подделать идентификационную информацию своего хоста, это может привести к ложной идентификации пользователя. Итак, кто-нибудь знает, как определить, использует ли хост прокси-сервер или нет?

InetAddress thisIp = InetAddress.getLocalHost();

Я использую приведенный выше код для определения IP-адреса хоста.

1 Ответ

2 голосов
/ 20 января 2012

Вы не можете на 100% надежно проверить это, но чтобы охватить большинство прокси, вы можете проверить наличие заголовка запроса X-Forwarded-For.

if (request.getHeader("X-Forwarded-For") != null) {
    // Client is likely using a proxy.
}

Для этого нет стандарта. Каждый прокси может иметь свой собственный набор дополнительных / пользовательских заголовков. Вы можете зарегистрировать полученные заголовки запроса и проверить, какие заголовки установлены определенными прокси, а затем соответствующим образом изменить код. Опять же, вы не можете надежно проверить это. Некоторые прокси могут вообще не иметь дополнительных заголовков. Вам нужно будет вести список IP-адресов «известных» прокси, чтобы вы могли проверить getRemoteAddr() против него.


Не связано с конкретной проблемой, поскольку вы пометили это , я бы только добавил, что написание кода Java внутри JSP - плохая практика. Обычно вы делаете это в обычном Java-классе, таком как сервлет или фильтр .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...