접근 제어 시 특정 IP를 허용, 금지는 간단하게 이 꼴(=) 연산으로 구분할 수 있습니다.
그러나 특정 IP의 범위를 허용해 주기 위해선 어떻게 해야 할까요?
IP를 long 형식으로 비교!
private long convertIP2Long (String ip) {
/* IP = IP1.IP2.IP3.IP4
* 공식 > IP1 * (256)^3 + IP2 * (256)^2 + IP3 * (256)^1 + IP4 * (256)^0
*/
String[] ipArray = ip.split("\\.");
long result = 0;
for (int index = 0; index < ipArray.length; index++) {
result += Integer.parseInt(ipArray[index]) * Math.pow(256, 3 - index);
}
return result;
}
위와 같은 형식으로 IP를 숫자 형식으로 바꾼 뒤에 범위를 비교해 주면 간단하게 구현할 수 있습니다.
첫IP | 검사IP | 끝IP | |
IP | 127.0.0.1 | 127.100.100.115 | 127.255.255.255 |
변환값(long) | 2130706433 | 2137285747 | 2147483647 |
검사 IP가 첫 IP와 끝 IP의 변환 값 사이에 들어가는 모습을 볼 수 있습니다.
참고 : https://www.smartconversion.com/unit_conversion/IP_Address_Converter.aspx
'프로그래밍 > Web.' 카테고리의 다른 글
[Web] OWASP ZAP로 HTTP Method 확인하기 (0) | 2020.08.24 |
---|---|
[JAVA] static과 final의 컴파일 (0) | 2020.08.11 |
[JavaScript] Google 사이트번역 API 사용법 (1) | 2020.08.05 |
[JAVA] 내부 클래스가 컴파일되면? (1) | 2020.07.08 |
[JAVA] SMTP 발송(feat.Naver) (0) | 2020.06.30 |
댓글