Ipfilter

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() ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
์ฃผ์–ด์ง„ ๋Œ€์—ญ ์ค‘ ํ•˜๋‚˜๋ผ๋„ ํ•ด๋‹น๋˜๋ฉด ์ฐธ์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.