Михаил Базаров Разработка на 1С-Битрикс Михаил Базаров

Как заблокировать доступ на сайт из определенной страны?

Внимание! Все сообщения на форуме проходят модерацию. Ваше сообщение появится после проверки.
Здравствуйте! Помогите разобраться. Пытаюсь заблокировать трафик из нескольких стран. Редакция бизнес, есть модуль веб аналитики с определение стран и айпи. Все что нашел в интернете это в /bitrix/php_interface/init.php (в моем случаии /bitrix/php_interface/s1/init.php) добавить код
Цитата
if (!in_array($_SESSION['SESS_COUNTRY_ID'], array('DE', 'KZ', 'UA', 'N0'))) { die('This site temporary unavailable.'); }
или
Цитата
AddEventHandler("main", "OnBeforeProlog", "MyOnBeforePrologHandler", 50);
public static function MyOnBeforePrologHandler() {
if (!in_array($_SESSION['SESS_COUNTRY_ID'], array('DE', 'KZ', 'UA', 'N0')))
{die('This site temporary unavailable.'); }
}
и пробовал добавлять session_start(); ну все равно не работает.
В чем может быть проблема ?
Скрин.
Да, это извечный и сложный вопрос.
Лично я блокирую по диапазонам IP cпомощью iptables на сервере
Может кто то может разъяснить еще один момент. Стоп лист в проактивной защите работает не корректно. То есть пользователь который находится в стоп листе по айпи может спокойно лазить по сайту, единственное не загружаются комментарии и если перейти в персональный раздел то только тогда ошибка 403 вылезает. Вопрос почему 403 нету при просмотре каталога и новостей ?
Дополню ответ спустя 2 года  :D
Как ограничить доступ к сайту по российским ip-адресам в 1C-Битрикс


Вообще лучше всего это сделать на уровне NGINX через модуль ngx_http_geoip2_module
Но если критично сделать на уровне Битрикса:

Сначала настраиваем модуль "Веб аналитика" прогружаем в него базу IP адресов по странам.
в /local/php_interface создаем файл init.php (если его еще нет) и добавляем в него
Код
AddEventHandler("main", "OnBeforeProlog", "MyOnBeforePrologHandler");
function MyOnBeforePrologHandler() {
    if (
        defined("ADMIN_SECTION") && ADMIN_SECTION == true
        && strpos($APPLICATION->GetCurPage(), "bitrix/admin") !== false
        && strpos($APPLICATION->GetCurPage(), "bitrix/admin/geoip_handler.php") !== false
    ) {
        return;
    }

    if (isset($_SESSION['SESS_COUNTRY_ID']) && $_SESSION['SESS_COUNTRY_ID'] !== 'RU') {
        header('HTTP/1.0 403 Forbidden');
        die('Доступ с вашего IP-адреса запрещён.');
    }
} 
Форма ответов
 
Текст сообщения*
Перетащите файлы
Ничего не найдено
Загрузить картинки
 

Блог-note Заметки по 1С-Битрикс