웹 개발을 하다보면 접속하는 사용자의 정보를 확인하기 위해서 CLIENT IP를 수집하는 경우가 있습니다.
하지만 접속하는 클라이언트가 PROXY SERVER를 사용하거나, 내부적으로 LOAD BALANCER를 하고 있다면 접속하는 클라이언트의 실제 IP를 수집하는 것이 아니라 웹 서버에 접속하는 바로 직전의 IP를 수집하게 될 것입니다.
그렇다면 그 정보는 정확한 정보가 아닌 쓰레기 정보라고 할 수 있겠죠?
그래서 접속하는 클라이언트의 실제 IP를 수집하는 방법을 설명 하려고 합니다.
먼저 보편적인 클라이언트 IP를 수집하는 방법입니다.
그렇다면 PROXY SERVER
또는 LOAD BALANCER
를 거쳐나온 클라이언트의 IP는 어떻게 구할까요?
대부분의 이런 경우에는 CLIENT IP가 없어지는 것이 아니라 Request의 헤더에 X-FORWARDED_FOR라는 키워드로 정보를 남겨 놓는다고 합니다. 그래서 자바내의 로직을 처리하실 때는 다음과 같이 하시면 됩니다.
위의 자료는 STCreative에서 개발을 하면서 겪었던 일을 기반으로 작성된 자료입니다.
모두 100%정확하다는 편견을 버려주십시요.
확인해 보시고 에러가 발생한다면 디버깅과 함께 해결 방법을 적어주시면 수정하도록 하겠습니다.
출처 : http://blog.stclab.co.kr/?p=6
메소드로 구현 해 놓기
public String getClientIP(HttpServletRequest request) {
String ip = request.getHeader("X-FORWARDED-FOR");
if (ip == null || ip.length() == 0) {
ip = request.getHeader("Proxy-Client-IP");
}
if (ip == null || ip.length() == 0) {
ip = request.getHeader("WL-Proxy-Client-IP"); // 웹로직
}
if (ip == null || ip.length() == 0) {
ip = request.getRemoteAddr() ;
}
return ip;
}
'프로그래밍 > JSP' 카테고리의 다른 글
[jsp] remoteAddr 이 IPv6 주소를 리턴할때 IPv4로 바꾸는 방법 (0) | 2014.12.02 |
---|---|
JSTL 변수를 스크립트릿에서 사용하는방법 (0) | 2014.11.29 |
[JSTL] List결과값에 대해 Index별 접근 (0) | 2014.11.18 |
오라클 mysql DB 연동 부분 (0) | 2014.10.08 |
[스트랩][JSP]한글파라미더 UTF-8처리 (쿠키 cookie 예제) (0) | 2014.10.01 |