2012-01-20 6 views
1

Java을 사용하는 프로젝트에서 작업하고 있습니다. 여기서 IP 주소는 클라이언트/사용자의 ID입니다. 따라서 한 가지 문제, 즉 사용자가 자신의 호스트 ID를 스푸핑 할 수있는 경우 사용자의 잘못된 신원을 알 수 있습니다. 그래서, 누구든지 알고, 어떻게 호스트가 프록시를 사용하고 있는지 여부를 감지 할 수 있습니까?Java/JSP에서 프록시를 감지합니다.

InetAddress thisIp = InetAddress.getLocalHost(); 

위의 코드를 사용하여 호스트 IP 주소를 감지했습니다.

답변

2

신뢰할 수있는 방법으로 이것을 확인할 수는 없지만 대부분의 프록시를 처리하려면 X-Forwarded-For 요청 헤더가 있는지 확인하십시오.

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

표준이 없습니다. 각 프록시에는 추가/사용자 정의 헤더 세트가있을 수 있습니다. 검색된 요청 헤더를 기록하고 특정 프록시가 설정 한 헤더를 조사한 다음 이에 따라 코드를 변경할 수 있습니다. 다시 말하지만, 이것을 신뢰성있게 확인할 수는 없습니다. 일부 프록시는 헤더를 전혀 추가하지 않을 수도 있습니다. getRemoteAddr()을 확인할 수 있도록 "잘 알려진"프록시의 IP 주소 목록을 유지해야합니다. 당신이 에이 태그로 JSP는 가난한 방법입니다 내부의 구체적인 문제에 관련없는


는, 나는 단지 그 서 자바 코드를 추가합니다. 일반적으로 servlet 또는 filter과 같은 일반적인 Java 클래스에서이 작업을 수행합니다.

+0

프록시 IP 주소 및 Java 라이브러리에 대한 공개 블랙리스트가 있습니다. https://github.com/ip2location/ip2proxy-java –

관련 문제