■ 사용자 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 |