Come bloccare l’accesso da paesi con .htaccess
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.
- Apri il file .htaccess nella tua directory public_html.
- Crea un elenco IP dal paese di tua scelta da questo sito. Per fare ciò, fai clic sul nome del paese e seleziona il formato Apache .htaccess Deny. Una volta terminato, fai clic su Crea ACL.
- Dopo aver copiato il codice nell’elenco generato nel tuo file .htaccess, fai clic sul pulsante Salva e chiudi.
- Ora il tuo sito è accessibile a tutti i paesi del mondo tranne i paesi che hai bloccato.
Oppure manualmente intervenire sul 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
Altro metodo tramite qualsiasi pagina PHP o Config.php
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