728x90
반응형
SMALL
request.getRemoteAddr() 을 활용해서 접속한 클라이언트의 IP를 얻을 수 있지만,
이건 항상 보장되지는 않는다. 왜냐하면..프록시..L4..스위치 등 OSI 계층에 따른
네트워크 단계에 따라 진행되다보면 IP가 변조될 수 있기 때문'-'!
그래서 추가적인 header가 생기면서 원래의 정보가 거기에 저장이 되기 때문에,
그 헤더를 추출하면서 IP를 정확히 얻을 수 있다.
다음과 같은 함수를 통해서 IP를 얻을 수 있다.
X-Forward-For 헤더부터 검증한 뒤 IP를 추적해나간다.
자주 공통으로 쓰는 메소드..
public static String getClientIpAddr(HttpServletRequest request) {
String ip = request.getHeader("X-Forwarded-For");
if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("Proxy-Client-IP");
}
if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("WL-Proxy-Client-IP");
}
if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("HTTP_CLIENT_IP");
}
if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("HTTP_X_FORWARDED_FOR");
}
if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getRemoteAddr();
}
return ip;
}
728x90
반응형
LIST
'Web&Spring' 카테고리의 다른 글
ul li 계단식으로 배치될때 해결 (0) | 2023.03.16 |
---|---|
This request has been blocked;the content must be served over HTTPS (0) | 2023.03.16 |
org.springframework.web.HttpRequestMethodNotSupportedException: Request method 'HEAD' not supported (0) | 2023.03.14 |
Tomcat jsp 용량초과 문제 - is exceeding the 65535 bytes limit (0) | 2023.03.13 |
iframe 사용시 하단에 공백 제거 방법 (0) | 2023.03.13 |