Назад | Перейти на главную страницу

Как заблокировать сайт для всех стран, кроме США и Канады

У меня есть веб-сайт, предназначенный только для посетителей из США и Канады. Я не хочу, чтобы это было видно другим посетителям.

Я хочу использовать решение для геотаргетинга, но у меня есть хостинг Amazon, который вернул текущий IP-адрес пользователя, так что есть ли способ узнать текущее местоположение пользователя или мы можем сделать это другим способом?

Итак, основываясь на тегах, я думаю, вы пытаетесь сделать это на уровне PHP.

Могу добавить, что это не единственный вариант, есть и другие, а именно:

  1. Брандмауэр (для этого идеально подходит CSF)
  2. ModSecurity
  3. htaccess

Итак, путь PHP

Логика, по сути, просто смотрит на IP-адрес пользователя, определяет страну, а затем использует оператор IF, чтобы узнать, разрешена ли эта страна пользователя (если да, сделайте что-то, запретите)

Мы воспользуемся бесплатным База IP-адресов MaxMind (GeoLite2 City) для определения страны происхождения пользователя.

<?php

// MaxMind Setup
require_once 'vendor/autoload.php';
use GeoIp2\Database\Reader;

$db =new Reader('GeoLite2-City.mmdb');
$client_ip=$db->city($_SERVER['REMOTE_ADDR']);
$client_country=$client_ip->country->isoCode;

// Specification of allowed_countries
$allowed_countries=array("US","CA");

// Blocking Logic
if(!in_array($client_country,$allowed_countries)) {
  header("HTTP/1.0 403 Forbidden");
  echo "<h1>Access Forbidden!</h1>";
  echo "<p>You are accessing from $client_country which is forbidden.</p>";
  exit();
}
?>

<html>
<head>
<title>Example Success</title>
</head>
<body>
<h1>Welcome</h1>
<p>You have access to this website.</p>
</body>
</html>

Итак, все, что вам нужно сделать, это сначала установить API GeoIP2-php, на который опирается этот скрипт. Для этого выполните следующие команды (как указано Вот):

  1. curl -sS https://getcomposer.org/installer | php
  2. php composer.phar require geoip2/geoip2:~2.0

Теперь вам нужно загрузить базу данных IP в каталог веб-сайта, где будет запускаться скрипт.

  1. wget http://geolite.maxmind.com/download/geoip/database/GeoLite2-City.tar.gz && gunzip GeoLite2-City.tar.gz
  2. Затем вы хотите переместить GeoLite2-City.mmdb из папки в каталог сервера. Обязательно ознакомьтесь с прилагаемыми к нему лицензиями, readme и уведомлением об авторских правах..

Как только вы все это сделаете - скрипт будет работать, вы можете изменить его по мере необходимости, однако в настоящее время, если пользователь обращается из страны, не указанной в $allowed_countries=array("US","CA"); строка (массив), то они будут встречены 403 Запрещенная страница.

Если страна указана, то будет отображаться все, что ниже начального раздела PHP - в этом случае <h1>Welcome</h1> страница - как вы реализуете этот PHP-скрипт, зависит от ваших конкретных обстоятельств.