이 글에서 설명하는 IP 주소 및 대역 표기 방식은 라이믹스에 내장된 대부분의 기능에 적용됩니다. 단, XE에서 가져온 후 아직 업데이트되지 않은 부분에서는 일부 형식을 인식하지 못할 수도 있습니다.
현재 적용이 완료된 부분은 아래와 같습니다.
- 관리자 로그인 허용 IP 및 관리자 로그인 금지 IP
- 디버그 허용 IP
- 사이트 잠금 기능 사용시 접근 허용 IP
- 스팸필터 모듈의 IP 차단 기능
예:
- 192.168.122.96
- 127.0.0.1
예:
- 192.168.122.*
- 192.168.*.*
- 192.168.*
- 192.168.122.0-192.168.122.255
- 192.168.0.0-192.168.255.255
- 192.168.216.0/24
- 192.168.64.0/20
- 192.168.0.0/16
예:
- 2001:2300:0000:0000:0000:0000:dead:beef
- 2001:2300:0:0:0:0:f00b:aa
- 2001:2300::ffff:0
- 2001:2300::
- ::1
예:
- 2001:2300:0000:0000:0000:0000:ffff:0000/112
- 2001:2300:0:0:3a:5b::/96
- 2001:2300::/64
- ::1/128
PHP 내장 함수를 사용해야 합니다. 정규표현식이나 그 밖의 방법은 권장하지 않습니다. 특히 IPv6 주소는 표기 방식이 다양하므로 함부로 해석하려고 하면 위험합니다.
올바른 IPv4 또는 IPv6 주소인지 검증하기:
$is_valid = (filter_var($ipaddress, FILTER_VALIDATE_IP) !== false);
올바른 IPv4 주소인지 검증하기:
$is_valid = (filter_var($ipaddress, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4) !== false);
올바른 IPv6 주소인지 검증하기:
$is_valid = (filter_var($ipaddress, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6) !== false);
filter_var()
함수는 올바른 IP 주소인 경우 IP 주소를 그대로 반환하고, 그렇지 않은 경우 거짓을 반환하므로
위와 같이 !== false
로 비교하는 것이 좋습니다.
라이믹스 프레임워크의 IpFilter
클래스를 사용하여 검증합니다.
위에 나열된 방식들 중 하나로 올바르게 표기된 IP 대역이면 참을 반환합니다.
$is_valid = \Rhymix\Framework\Filters\IpFilter::validateRange($range);
검증할 대역이 여러 개인 경우 validateRanges()
메소드를 사용합니다.
모든 대역이 올바르게 표기된 경우에만 참을 반환합니다.
라이믹스 프레임워크의 IpFilter
클래스를 사용하여 확인합니다.
주어진 IP 주소가 주어진 IP 대역에 포함되어 있는 경우 참을 반환합니다.
$in_range = \Rhymix\Framework\Filters\IpFilter::inRange($ipaddress, $range);
확인할 대역이 여러 개인 경우 inRanges()
메소드를 사용합니다.
주어진 대역 중 하나라도 해당되면 참을 반환합니다.