매뉴얼

IP 주소 및 대역 표기 방식

개요 #

이 글에서 설명하는 IP 주소 및 대역 표기 방식은 라이믹스에 내장된 대부분의 기능에 적용됩니다. 단, XE에서 가져온 후 아직 업데이트되지 않은 부분에서는 일부 형식을 인식하지 못할 수도 있습니다.

현재 적용이 완료된 부분은 아래와 같습니다.

  • 관리자 로그인 허용 IP 및 관리자 로그인 금지 IP
  • 디버그 허용 IP
  • 사이트 잠금 기능 사용시 접근 허용 IP
  • 스팸필터 모듈의 IP 차단 기능

IPv4 주소 #

예:

  • 192.168.122.96
  • 127.0.0.1

IPv4 대역 #

예:

  • 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

IPv6 주소 #

예:

  • 2001:2300:0000:0000:0000:0000:dead:beef
  • 2001:2300:0:0:0:0:f00b:aa
  • 2001:2300::ffff:0
  • 2001:2300::
  • ::1

IPv6 대역 #

예:

  • 2001:2300:0000:0000:0000:0000:ffff:0000/112
  • 2001:2300:0:0:3a:5b::/96
  • 2001:2300::/64
  • ::1/128

올바른 IP 주소인지 검증하는 방법 #

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로 비교하는 것이 좋습니다.

올바른 IP 대역인지 검증하는 방법 #

라이믹스 프레임워크의 IpFilter 클래스를 사용하여 검증합니다. 위에 나열된 방식들 중 하나로 올바르게 표기된 IP 대역이면 참을 반환합니다.

$is_valid = \Rhymix\Framework\Filters\IpFilter::validateRange($range);

검증할 대역이 여러 개인 경우 validateRanges() 메소드를 사용합니다. 모든 대역이 올바르게 표기된 경우에만 참을 반환합니다.

IP 주소가 IP 대역에 포함되어 있는지 확인하는 방법 #

라이믹스 프레임워크의 IpFilter 클래스를 사용하여 확인합니다. 주어진 IP 주소가 주어진 IP 대역에 포함되어 있는 경우 참을 반환합니다.

$in_range = \Rhymix\Framework\Filters\IpFilter::inRange($ipaddress, $range);

확인할 대역이 여러 개인 경우 inRanges() 메소드를 사용합니다. 주어진 대역 중 하나라도 해당되면 참을 반환합니다.