Belirli bir ip adres aralığını PHP ile engellemek yada belirlemek için kullanabiliriz. Daha sağlam bir güvenlik için tabiki ayarların firewall üzerinde yapılandırılması tavsiye edilir.
function ip_in_range( $ip, $range ) {
if ( strpos( $range, '/' ) == false ) {
$range .= '/32';
}
// $range is in IP/CIDR format eg 127.0.0.1/24
list( $range, $netmask ) = explode( '/', $range, 2 );
$range_decimal = ip2long( $range );
$ip_decimal = ip2long( $ip );
$wildcard_decimal = pow( 2, ( 32 - $netmask ) ) - 1;
$netmask_decimal = ~ $wildcard_decimal;
return ( ( $ip_decimal & $netmask_decimal ) == ( $range_decimal & $netmask_decimal ) );
}
echo ip_in_range("104.27.143.80","104.16.0.0/12"); //It returns 1 if ip adress in range
Bu fonkiyonu Cloudflare korumalı bir sunucu üzerinden gelen http flood atağını önlemek için kullanabilirsiniz.
Cloudflare ip adres aralığını https://www.cloudflare.com/ips/ bu sayfadan öğrenebilirsiniz.
Bu şekilde belli bir bölgeden ülkeden yada firmadan gelen istekleri engelleyebiliriz.