티스토리 뷰
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 |
---|