스프링(spring3.1+)에서 javax.servlet.http.HttpServletRequest 로 들어오는 요청에 해당하는 IP주소를 확인하여 설정된 대역에 포함되는지 체크해봤다.
복잡한 구현 필요없이 commons-net-3.3.jar 를 이용하면 간단히 해결할 수 있다.
1. 서브넷을 이용한 방법
1.1. WEB-INF/conf/system.properties 작성
허용할 IP 주소
permit.ip.addr=192.168.5.64
서브넷
permit.ip.subnet=255.255.255.0
1.2. isInRange(요청 IP주소)
org.apache.commons.net.util.SubnetUtils subnetUtils = new SubnetUtils("192.168.5.64", "255.255.255.0");
org.apache.commons.net.util.SubnetUtils.SubnetInfo subnetInfo = subnetUtils.getInfo();
if(subnetInfo.isInRange(요청 IP주소)){
system.out.println("요청한 IP주소는 허용합니다.");
}else{
system.out.println("요청한 IP주소는 허용하지 않는 네트워크 입니다.");
}
2. CIDR NOTATION 을 이용한 방법
2.1. WEB-INF/conf/system.properties 작성
허용할 IP 주소/Network Prefix Length
permit.ip.addr=192.168.5.64/26
2.2. isInRange(요청 IP주소)
org.apache.commons.net.util.SubnetUtils.SubnetInfo subnetInfo = new org.apache.commons.net.util.SubnetUtils("192.168.5.64/26").getInfo();
if(subnetInfo.isInRange(요청 IP주소)){
system.out.println("요청한 IP주소는 허용합니다.");
}else{
system.out.println("요청한 IP주소는 허용하지 않는 네트워크 입니다.");
}
commons.net => http://commons.apache.org/proper/commons-net/apidocs/index.html
subnet => http://ko.wikipedia.org/wiki/부분망
'라이브러리' 카테고리의 다른 글
apache commons codec 을 이용한 Base64 암호화 복호화 그리고 md5 등의 다이제스트 + jquery Base64 (0) | 2014.10.17 |
---|---|
자바스크립트 날짜 형식 moment js (0) | 2014.09.12 |