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()
๋ฉ์๋๋ฅผ ์ฌ์ฉํฉ๋๋ค.
์ฃผ์ด์ง ๋์ญ ์ค ํ๋๋ผ๋ ํด๋น๋๋ฉด ์ฐธ์ ๋ฐํํฉ๋๋ค.