PHP IP Adres aralığı engelleme

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.