Server

[ClientIP] 사용자 IP 추출하기(request.getRemoteAddr())

고구마맨 2024. 6. 25. 15:23
반응형

■ 사용자 PC 의 IP를 받아와서 비교하는 프로세스를 진행하는데 실제 사용자 PC 의 IP가 나오지 않고 당시엔 WAS 서버 IP가 값으로 설정되어 보여졌다. 함수를 써서 간단히 사용자 IP를 확인할 수 있으면 좋겠지만 보안상 또는 환경 구성상 실제 사용자 PC IP를 확인할 수 있는 곳은 많지 않다. 하드웨어 장비(L4,L7 등)가 추가 될 수도 있고 웹서버나 기타 소프트웨어로 제어되기도 하기 때문이다. 그래서 우선 프로세스를 적용할 환경에서 사용자PC 의 IP 정보를 획득할 수 있는지 정책적인 부분의 확인도 중요하다. 기능으로 구현을 할 수 있어도 보안정책으로 사용하지 못하는 경우도 많기 때문이다. 이런 상황을 제외하고 사용자 PC IP 정보를 얻을 수 있게 구현을 하기 위해서 보통 header에 사용자 IP 값을 특정 헤더값으로 설정을 하면 된다.


hearder 의 표준 버전은 X-Forwarded-For, X-Forwarded-Host, 그리고 X-Forwarded-Proto  라고 한다.

 

이 외에도 몇 가지가 더 존재한다.

 

아래는 예시이다.

 

clientIP = request.getHeader("X-Forwarded-For");

if (clientIP == null || clientIP.length() == 0 || "unknown".equalsIgnoreCase(clientIP)) {

clientIP = request.getHeader("Proxy-Client-IP");

}

if (clientIP == null || clientIP.length() == 0 || "unknown".equalsIgnoreCase(clientIP)) {

clientIP = request.getHeader("WL-Proxy-Client-IP");

}

if (clientIP == null || clientIP.length() == 0 || "unknown".equalsIgnoreCase(clientIP)) {

clientIP = request.getHeader("HTTP_CLIENT_IP");

}

if (clientIP == null || clientIP.length() == 0 || "unknown".equalsIgnoreCase(clientIP)) {

clientIP = request.getHeader("HTTP_X_FORWARDED_FOR");

}

if (clientIP == null || clientIP.length() == 0 || "unknown".equalsIgnoreCase(clientIP)) {

clientIP = request.getRemoteAddr();

}

 

 

 

반응형

'Server' 카테고리의 다른 글

[Ubuntu] FTP / SFTP 접속  (0) 2024.05.23
[Linux] 특수 명령어(setuid,setgid,sticky bit)  (0) 2024.04.01
[OS] Linux OS  (0) 2024.03.08
[Server] "prohibited command." command ERROR  (0) 2024.01.16
[Linux] 권한관리  (2) 2023.12.04