Задать вопрос

Самый простой способ запретить доступ для определенной страны?

Не копаясь особенно в серверных настройках. Например по языку в браузере или еще каким-то меткам: как запретить доступ к сайту, точнее имитировать нерабочесть сайта (пустой документ или какая-нибудь ошибка). Возможно ли это? Приходит на ум JavaScript и определение языка у браузера клиента, а затем перезапись через document.write документ. Рабочий ли это способ? (не тестировал). Есть ли методы по-лучше?
  • Вопрос задан
  • 717 просмотров
Подписаться 5 Оценить Комментировать
Решения вопроса 2
riot26
@riot26
<:З )~~
По IP.
PS теги css и html -- лишние
набросал пример:
(не пускает всех, кто не из вайтлиста стран, для блеклиста придётся немного переписать)
<?php
if ( !checkAccess() ) {
    header($_SERVER["SERVER_PROTOCOL"]." 404 Not Found");
    die("<h1>404</h1>Not found");
}
function checkAccess()
{
    $ip = getIP();
    return isAllowedIP($ip);
}
function isAllowedIP($ip)
{
    $allowed_countries = array("RU", "UA", "BY", "KZ"); //разрешённые страны
    $ip_info = getIPInfo($ip);
    return ( in_array($ip_info["countryCode"], $allowed_countries) || in_array($ip_info["country"], $allowed_countries) );
}
function getIPInfo($ip)
{
    $json = file_get_contents("http://ip-api.com/json/".$ip);
    return json_decode($json, true);
}
function getIP()
{
    if (!empty($_SERVER["HTTP_CLIENT_IP"])) {
        return $_SERVER["HTTP_CLIENT_IP"];
    } else if (!empty($_SERVER["HTTP_X_FORWARDED_FOR"])) {
        return $_SERVER["HTTP_X_FORWARDED_FOR"];
    } else {
        return $_SERVER["REMOTE_ADDR"];
    }
}
Ответ написан
littleguga
@littleguga
Не стыдно не знать, а стыдно не интересоваться.
1. То. что Вы написали про JS - можно, работать будет. В заголовках даже отправляется Accept Language, ну или по ip можно.

НО! Отключив js, можно будет увидеть всё остальное.

2. На стороне приложения(в коде php), можно также по заголовку Accept Language, можно по ip.
Один из вариантов реализации предложил riot26

3. Можно отсекать через nginx, в принципе.
www.cyberciti.biz/faq/linux-unix-nginx-access-cont...
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@mletov
Как вариант, в .htaccess по диапазонам айпишников.
Использовал этот способ когда сайт ддосили из Китая.
Недостатки способа в том, что, во-1, htaccess раздувается непомерно, а во-2, у стран могут появиться новыые диапазоны.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы