2012. 7. 7. 18:54 웹전반(표준)
[링크] Client IP 문제 (X-Forwarded-For) 해결 방안
출처 http://crown0047.egloos.com/1150193
- 작성시간 : 2010/11/30 13:01
- 퍼머링크 : crown0047.egloos.com/1150193
- 덧글수 : 0
L4 에서 IP를 바꿔버리는 문제가
발생했습니다.
스위치를 예전 모델로 교체한다고 하여도 해당문제는 앞 단에 위치하게 되는 Firewall 장비에서 IP Remapping 할
가능성이 존재하므로,
L4 에서는 IP 를 Remapping 하면서 Client IP 를 아예 없애버리는 게 아니고
X-Forwarded-For 라는 헤더에 남겨 놓는다고 하니,
(대부분의 Proxy에서 이런 방법으로 IP를
기록합니다.)
기본적으로는
X-Forwarded-For 정보를 헤더에서 추출하고 그 값이 비어있을 경우 Remote-Addr 헤더 혹은 자바 라이브러리의 IP 확인하는
소스로 문제없이 사용이 가능합니다.
PS. 해당 값은 LP VIP 을 통해
들어갈 때만 생기게 됩니다.
위에 설명했듯이 클라이언트에서 보내주는 헤더값이 아니라 L4 VIP 를 통해 들어갈때 L4에서 헤더에
넣어주는 헤더값입니다.
우리 서버에서 실제 사용하는 소스
/**
* @param request
* @return
* 아이피 조회
*/
public static String getIp(HttpServletRequest request) {
String rtnIp = "";
rtnIp = request.getHeader("HTTP_X_FORWAREDE_FOR");
if (isEmpty(rtnIp) || rtnIp.toLowerCase().equals("unknown")) {
rtnIp = request.getHeader("X-Forwarded-For");
}
if (isEmpty(rtnIp) || rtnIp.toLowerCase().equals("unknown")) {
rtnIp = request.getHeader("Proxy-Client-IP");
}
if (isEmpty(rtnIp) || rtnIp.toLowerCase().equals("unknown")) {
rtnIp = request.getHeader("REMOTE_ADDR");
}
if (isEmpty(rtnIp) || rtnIp.toLowerCase().equals("unknown")) {
rtnIp = request.getRemoteAddr();
}
return nullToEmpty(rtnIp);
}
'웹전반(표준)' 카테고리의 다른 글
IE 버전별 테스트 사이트 (0) | 2013.02.04 |
---|---|
해킹 관련 (0) | 2013.01.29 |
[링크] Tomcat Context 수동 Reload (0) | 2012.06.04 |
구글 분석 - 콘텐츠 실험 (0) | 2012.06.04 |
jsp asp 암호화 관련 링크 (0) | 2012.05.25 |