티스토리 뷰

Java

IP 대역 확인 및 허용하기

Giles Blog 2021. 8. 30. 17:18
728x90

Spring Security Ip 대역대 차단하기을 위해서 설정하였지만 Load Balance 상태의 서버 경우 Was설정을 변경해서 처리해야한다고

한다. Was설정을 수정할수없어서 commons-net-3.0.1.jar를 사용하여 처리하였다.

Header 에서 IP를 찾는 방법이 많았지만 저는 이방법을 채택해서 사용하였습니다. 

 

// 생략 

private static final String[] HEADERS_TO_TRY = {
	"X-Forwarded-For",
    "Proxy-Client-IP",
    "WL-Proxy-Client-IP",
    "HTTP_X_FORWARDED_FOR",
    "HTTP_X_FORWARDED",
    "HTTP_X_CLUSTER_CLIENT_IP",
    "HTTP_CLIENT_IP",
    "HTTP_FORWARDED_FOR",
    "HTTP_FORWARDED",
    "HTTP_VIA",
    "HTTP_ADDR"
}

// 생략

String [] tempIpProp = IOUtil.setString(propertiesService.getString("acceptIp")).split("\\,", -1);
int flagIp = 0;
String getRequestIpAdres = getClientIpAddress(request);
for(String string : tempIpProp){
	SubnetUtils subnetUtils = new SubnetUtils(string);
    SubnetInfo subnetInfo = subnetUtils.getInfo();
    if(subentInfo.isInRange(getRequestIpAdres)){
    	flagIp += 1;
    }
}

if(flagIp < 1) {
	return false;
}

// 생략


private String getClientIpAddress(HttpServletRequest request){
	for(String header : HEADER_TO_TRY){
    	String ip = reqeust.getHeader(header);
        if(ip != null && ip.length() != 0 && !"unknown".equalsIgnoreCase(ip)){
        	return ip;
        }
    }
    return reqeust.getRemoteAddr();
}

'Java' 카테고리의 다른 글

[Mac] JDK 버전관리 - sdkman  (0) 2023.03.27
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함