A volte potresti voler bloccare alcuni paesi al tuo progetto questo è il tuo diritto più naturale. Ma, quando provi a seguire questo processo tramite .htaccess, potresti vedere che non funziona nel tempo perché le classi IP basate sul paese cambiano frequentemente. Ciò significa che aggiorni frequentemente i blocchi IP. Invece, abbiamo sviluppato una soluzione più pratica. Il seguente codice completa una query istantanea dell’indirizzo IP che visita il tuo sito e ottiene il codice del paese. Se è nella tua lista vietata, invia una risposta di blocco 403 al visitatore e smette di funzionare. Ci sono anche casi in cui tutti gli attacchi provengono da un paese specifico. Oppure potresti voler rendere i tuoi contenuti inaccessibili in alcuni paesi per qualche motivo. Per risolvere questo problema, puoi bloccare l’accesso utilizzando il file .htaccess.
Tieni presente che se blocchi il tuo Paese, sarai comunque in grado di accedere a cPanel, ma non sarai in grado di visualizzare il sito Web finché il blocco non verrà rimosso. Tieni inoltre presente che le VPN e gli IP privati potrebbero avere risultati imprevisti in questo caso. Aggiungi il codice seguente all’inizio del tuo file .htaccess, quindi seleziona Salva.
GeoIPEnable On # Add countries you wish to deny here SetEnvIf GEOIP_COUNTRY_CODE CO DenyCountry SetEnvIf GEOIP_COUNTRY_CODE EG DenyCountry SetEnvIf GEOIP_COUNTRY_CODE HI DenyCountry Allow from all Deny from env=DenyCountry
Puoi anche fare il contrario e consentire solo a paesi specifici di accedere al tuo sito web. Questa è un’ottima misura di sicurezza proattiva se, ad esempio, intendi avere solo clienti o visitatori in italia sul tuo sito.
GeoIPEnable On
# Put countries to allow here
SetEnvIf GEOIP_COUNTRY_CODE IT AllowCountry
Deny from all
Allow from env=AllowCountry
Puoi aggiungere le seguenti righe nella parte superiore del file index.php o del file PHP comunemente utilizzato (come config.php), appena sotto la riga <?php:
function ip_info($ip = NULL, $purpose = "location", $deep_detect = TRUE) { $output = NULL; if (filter_var($ip, FILTER_VALIDATE_IP) === FALSE) { $ip = $_SERVER["REMOTE_ADDR"]; if ($deep_detect) { if (filter_var(@$_SERVER['HTTP_X_FORWARDED_FOR'], FILTER_VALIDATE_IP)) $ip = $_SERVER['HTTP_X_FORWARDED_FOR']; if (filter_var(@$_SERVER['HTTP_CLIENT_IP'], FILTER_VALIDATE_IP)) $ip = $_SERVER['HTTP_CLIENT_IP']; } } $purpose = str_replace(array("name", "n", "t", " ", "-", "_"), NULL, strtolower(trim($purpose))); $support = array("country", "countrycode", "state", "region", "city", "location", "address"); $continents = array( "AF" => "Africa", "AN" => "Antarctica", "AS" => "Asia", "EU" => "Europe", "OC" => "Australia (Oceania)", "NA" => "North America", "SA" => "South America" ); if (filter_var($ip, FILTER_VALIDATE_IP) && in_array($purpose, $support)) { $ipdat = @json_decode(file_get_contents("http://www.geoplugin.net/json.gp?ip=" . $ip)); if (@strlen(trim($ipdat->geoplugin_countryCode)) == 2) { switch ($purpose) { case "location": $output = array( "city" => @$ipdat->geoplugin_city, "state" => @$ipdat->geoplugin_regionName, "country" => @$ipdat->geoplugin_countryName, "country_code" => @$ipdat->geoplugin_countryCode, "continent" => @$continents[strtoupper($ipdat->geoplugin_continentCode)], "continent_code" => @$ipdat->geoplugin_continentCode ); break; case "address": $address = array($ipdat->geoplugin_countryName); if (@strlen($ipdat->geoplugin_regionName) >= 1) $address[] = $ipdat->geoplugin_regionName; if (@strlen($ipdat->geoplugin_city) >= 1) $address[] = $ipdat->geoplugin_city; $output = implode(", ", array_reverse($address)); break; case "city": $output = @$ipdat->geoplugin_city; break; case "state": $output = @$ipdat->geoplugin_regionName; break; case "region": $output = @$ipdat->geoplugin_regionName; break; case "country": $output = @$ipdat->geoplugin_countryName; break; case "countrycode": $output = @$ipdat->geoplugin_countryCode; break; } } } return $output; } $paesi_negati=array("RU"=>0, "FR"=>0, "CN"=>0, "CO"=>0); $codice_paese = ip_info("Visitor", "Countrycode"); if (array_key_exists($codice_paese,$paesi_negati)){ header('HTTP/1.1 403 Forbidden'); echo "Forbidden Country IP! / IP del paese proibito!"; die(); }
Puoi aggiungere i codici paese dei paesi da bloccare nell’array soprastante, puoi trovare i codici paesi in lettere qui: https://www.nationsonline.org/oneworld/country_code_list.htm