1С-Битрикс единственная система в которой есть модуль проактивной защиты. Он включает в себя:
Проактивный фильтр (Web Application Firewall*) обеспечивает защиту от большинства известных атак на веб-приложения
Веб-антивирус - система противодействия заражениям сайтов
Двухэтапная авторизация
Контроль целостности файлов
Защита административной части с доступом к ней только с определенных IP адресов
Защита сессий
Защита редиректов от фишинга
Защита от фреймов
Контроль активности
И сегодня хотел остановиться на одном методе защиты: Контроль активности.
Контроль активности позволяет установить защиту от чрезмерно активных пользователей, программных роботов, некоторых категорий DDoS-атак, а также отсекать попытки подбора паролей перебором.
При активации этого метода защиты Вы указываете параметры при которых сессия пользователя будет заблокирована и запись о нем попадет в журнал. Например если пользователь за 10 секунд сделает 30 хитов то его сессия будет заблокирована, а отчет о нем попадет администратору сайта и вместо контента Вашего сайта будет отображена ошибка 503 с сообщением, что доступ запрещен.
Но при включении данного метода защиты не исключена ситуация когда под блокировку попадают не "роботы", а люди. В стандартном варианте нет способа самому снять данную блокировку и продолжить просматривать контент Вашего сайта тем самым мы теряем пользователей которые разочаровавшись просто уйдут с вашего сайта.
Чтобы этого не случилось мы в своих проектах использовали технологию Google reCAPTCHA для проверки и отключения блокировки у пользователей сайта.
На текущий момент Google reCAPTCHA имеет весьма дружелюбный для пользователя интерфейс. Она не просит Вас распознать какой-то текст, или цифру. Это крайне не удобно и возможна куча ошибок. Минимум, что Google reCAPTCHA может попросить от Вас это поставить галочку, что Вы не робот:
Или предложит Вам выбрать картинки с изображением например апельсина.
Легко и удобно. Но как же данный функционал включить в свой проект? Так-же легко.
Нам предлагают зарегистрировать наш сайт в системе reCAPTCHA. Процесс регистрации довольно прост:
Указываем название вашего сайта
Указываем домены для которых будет использоваться reCAPTCHA. (По одному домену на одну строку)
Указываем владельца. (Тут указываем Вашу учетную запись на GMail например: habrhabr@gmail.com)
После регистрации Вам будут сформированы 2 ключа. Один ключ будет использоваться для отображения reCAPTCHA на сайте, а второй будет использоваться для проверки прошел ли пользователь проверку или нет.
Ключи мы получили идет теперь на наш сайт.
Корректировка страницы блокировки.
В системе 1С-Битрикс в папке /bitrix/ есть файл activity_limit.php в котором и лежит шаблон страницы отображаемой при блокировке пользователя. Вы можете включить в нее свой дизайн сайта, или сформировать новый шаблон именно для страницы блокировки. (этап подготовки интерфейса мы пропустим т.к. у каждого будет свой подход к тому как оформить эту страницу)
После того как мы подготовили основной интерфейс страницы займемся подключением модуля Google reCAPTCHA для этого в тело HTML документа до тэга </head> нам надо вставить JS скрипты Google
Action у формы мы специально оставили пустым чтобы отправка выполнилась в этот-же файл.
Метод проверки и разблокировки.
<?
if (isset($_REQUEST["g-recaptcha-response"])) //Если мы получили хеш проверки с формы
{
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php"); //Подключаем ядро Битрикса
$request = new \Bitrix\Main\Web\HttpClient(); //Создает объект HttpClient
//Формируем запрос на проверку в Google
$post = $request->post("https://www.google.com/recaptcha/api/siteverify", Array(
"secret" => "Секретный_ключ", //Наш секретный ключ от Google
"response" => $_REQUEST["g-recaptcha-response"], //Сам хеш с формы
"remoteip" => $_SERVER["REMOTE_ADDR"] //IP адрес пользователя проходящего проверку
));
$post = json_decode($post); //Декодируем ответ от Google
if ($post->success == 'true') //Если проверка прошла удачно
{
$_SESSION["SESS_GRABBER_STOP_TIME"] = ""; //Очищаем ключ блокировки в сессии
}else{
//Выполняем действие если не прошел проверку на reCAPTCHA
}
}
?>
И можно в HTML теле файла сделать тоже сообщение об удачном прохождении проверки:
Данную страницу можно усилить кодом по автоматической полной блокировки IP адреса в случае частых срабатываний блокировки сессии для защиты от назойливых роботов.
Но вне зависимости от того прошел пользователь проверку или нет Вы получите отчет о том, что к нему были применены меры по блокировке его сессии. Предоставят возможность проанализировать самому последние его хиты в момент блокировки и у Вас будет возможность при необходимости занести его IP адрес в лист блокировки.
Надеюсь моя форма поможет Вам сократить число "роботов" на Ваших сайтах.
P.S. Не бойтесь, что поисковые системы попадут под блокировку. Для них есть в системе специальные методы по которым хиты поисковых системы не будут учитываться и индексация Вашего сайта не пострадает.
Группы на сайте создаются не только сотрудниками «1С-Битрикс», но и партнерами компании. Поэтому мнения участников групп могут не совпадать с позицией компании «1С-Битрикс».