1С-Битрикс единственная система в которой есть модуль проактивной защиты. Он включает в себя:
И сегодня хотел остановиться на одном методе защиты: Контроль активности.
При активации этого метода защиты Вы указываете параметры при которых сессия пользователя будет заблокирована и запись о нем попадет в журнал. Например если пользователь за 10 секунд сделает 30 хитов то его сессия будет заблокирована, а отчет о нем попадет администратору сайта и вместо контента Вашего сайта будет отображена ошибка 503 с сообщением, что доступ запрещен.
Но при включении данного метода защиты не исключена ситуация когда под блокировку попадают не «роботы», а люди. В стандартном варианте нет способа самому снять данную блокировку и продолжить просматривать контент Вашего сайта тем самым мы теряем пользователей которые разочаровавшись просто уйдут с вашего сайта.
Чтобы этого не случилось мы в своих проектах использовали технологию Google reCAPTCHA для проверки и отключения блокировки у пользователей сайта.
На текущий момент Google reCAPTCHA имеет весьма дружелюбный для пользователя интерфейс. Она не просит Вас распознать какой-то текст, или цифру. Это крайне не удобно и возможна куча ошибок. Минимум, что Google reCAPTCHA может попросить от Вас это поставить галочку, что Вы не робот:
Или предложит Вам выбрать картинки с изображением например апельсина.
Легко и удобно. Но как же данный функционал включить в свой проект? Так-же легко.
(Предположим у Вас уже есть акаунт на Google, если нет то идет регистрировать)
Авторизуемся на сайте www.google.com после чего идем по ссылке: www.google.com/recaptcha/admin
Нам предлагают зарегистрировать наш сайт в системе reCAPTCHA. Процесс регистрации довольно прост:
После регистрации Вам будут сформированы 2 ключа. Один ключ будет использоваться для отображения reCAPTCHA на сайте, а второй будет использоваться для проверки прошел ли пользователь проверку или нет.
Ключи мы получили идет теперь на наш сайт.
Корректировка страницы блокировки.
В системе 1С-Битрикс в папке /bitrix/ есть файл activity_limit.php в котором и лежит шаблон страницы отображаемой при блокировке пользователя. Вы можете включить в нее свой дизайн сайта, или сформировать новый шаблон именно для страницы блокировки. (этап подготовки интерфейса мы пропустим т.к. у каждого будет свой подход к тому как оформить эту страницу)
После того как мы подготовили основной интерфейс страницы займемся подключением модуля Google reCAPTCHA для этого в тело HTML документа до тэга нам надо вставить JS скрипты Google
В тело документа мы добавляем форму проверки и указываем в ней наш публичный ключ для формирования Google reCAPTCHA:
Action у формы мы специально оставили пустым чтобы отправка выполнилась в этот-же файл.
Метод проверки и разблокировки.
И можно в HTML теле файла сделать тоже сообщение об удачном прохождении проверки:
Данную страницу можно усилить кодом по автоматической полной блокировки IP адреса в случае частых срабатываний блокировки сессии для защиты от назойливых роботов.
Но вне зависимости от того прошел пользователь проверку или нет Вы получите отчет о том, что к нему были применены меры по блокировке его сессии. Предоставят возможность проанализировать самому последние его хиты в момент блокировки и у Вас будет возможность при необходимости занести его IP адрес в лист блокировки.
Надеюсь моя форма поможет Вам сократить число «роботов» на Ваших сайтах.
P.S. Не бойтесь, что поисковые системы попадут под блокировку. Для них есть в системе специальные методы по которым хиты поисковых системы не будут учитываться и индексация Вашего сайта не пострадает.
- Проактивный фильтр (Web Application Firewall*) обеспечивает защиту от большинства известных атак на веб-приложения.
- Веб-антивирус — система противодействия заражениям сайтов.
- Двухэтапная авторизация.
- Контроль целостности файлов.
- Защита административной части с доступом к ней только с определенных IP адресов.
- Защита сессий.
- Защита редиректов от фишинга.
- Защита от фреймов.
- Контроль активности.
И сегодня хотел остановиться на одном методе защиты: Контроль активности.
Контроль активности позволяет установить защиту от чрезмерно активных пользователей, программных роботов, некоторых категорий DDoS-атак, а также отсекать попытки подбора паролей перебором.
При активации этого метода защиты Вы указываете параметры при которых сессия пользователя будет заблокирована и запись о нем попадет в журнал. Например если пользователь за 10 секунд сделает 30 хитов то его сессия будет заблокирована, а отчет о нем попадет администратору сайта и вместо контента Вашего сайта будет отображена ошибка 503 с сообщением, что доступ запрещен.
Но при включении данного метода защиты не исключена ситуация когда под блокировку попадают не «роботы», а люди. В стандартном варианте нет способа самому снять данную блокировку и продолжить просматривать контент Вашего сайта тем самым мы теряем пользователей которые разочаровавшись просто уйдут с вашего сайта.
Чтобы этого не случилось мы в своих проектах использовали технологию Google reCAPTCHA для проверки и отключения блокировки у пользователей сайта.
На текущий момент Google reCAPTCHA имеет весьма дружелюбный для пользователя интерфейс. Она не просит Вас распознать какой-то текст, или цифру. Это крайне не удобно и возможна куча ошибок. Минимум, что Google reCAPTCHA может попросить от Вас это поставить галочку, что Вы не робот:
Или предложит Вам выбрать картинки с изображением например апельсина.
Легко и удобно. Но как же данный функционал включить в свой проект? Так-же легко.
(Предположим у Вас уже есть акаунт на Google, если нет то идет регистрировать)
Авторизуемся на сайте www.google.com после чего идем по ссылке: www.google.com/recaptcha/admin
Нам предлагают зарегистрировать наш сайт в системе reCAPTCHA. Процесс регистрации довольно прост:
- Указываем название вашего сайта
- Указываем домены для которых будет использоваться reCAPTCHA. (По одному домену на одну строку)
- Указываем владельца. (Тут указываем Вашу учетную запись на GMail например: habrhabr@gmail.com)
После регистрации Вам будут сформированы 2 ключа. Один ключ будет использоваться для отображения reCAPTCHA на сайте, а второй будет использоваться для проверки прошел ли пользователь проверку или нет.
Ключи мы получили идет теперь на наш сайт.
Корректировка страницы блокировки.
В системе 1С-Битрикс в папке /bitrix/ есть файл activity_limit.php в котором и лежит шаблон страницы отображаемой при блокировке пользователя. Вы можете включить в нее свой дизайн сайта, или сформировать новый шаблон именно для страницы блокировки. (этап подготовки интерфейса мы пропустим т.к. у каждого будет свой подход к тому как оформить эту страницу)
После того как мы подготовили основной интерфейс страницы займемся подключением модуля Google reCAPTCHA для этого в тело HTML документа до тэга нам надо вставить JS скрипты Google
<script src='https://www.google.com/recaptcha/api.js?hl=ru'></script>
В тело документа мы добавляем форму проверки и указываем в ней наш публичный ключ для формирования Google reCAPTCHA:
<form action="" method="post">
<div class="g-recaptcha" data-sitekey="Публличный_ключ"></div>
<br/>
<input type="submit" class="btn btn-system" value="Подтвердить">
</form>
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 теле файла сделать тоже сообщение об удачном прохождении проверки:
<?if ($post->success == 'true'){?>
<h2>Поздравляем, Вы не робот.</h2>
<a class="btn btn-system" href="<?=$APPLICATION->GetCurPageParam("", array("g-recaptcha-response"))?>">Обновить страницу</a>
<script type="text/javascript">
document.addEventListener('DOMContentLoaded', function() {
window.location.replace('<?=$APPLICATION->GetCurPageParam("", array("g-recaptcha-response"))?>');
window.location.reload();
});
</script>
<?}?>
Данную страницу можно усилить кодом по автоматической полной блокировки IP адреса в случае частых срабатываний блокировки сессии для защиты от назойливых роботов.
Но вне зависимости от того прошел пользователь проверку или нет Вы получите отчет о том, что к нему были применены меры по блокировке его сессии. Предоставят возможность проанализировать самому последние его хиты в момент блокировки и у Вас будет возможность при необходимости занести его IP адрес в лист блокировки.
Надеюсь моя форма поможет Вам сократить число «роботов» на Ваших сайтах.
P.S. Не бойтесь, что поисковые системы попадут под блокировку. Для них есть в системе специальные методы по которым хиты поисковых системы не будут учитываться и индексация Вашего сайта не пострадает.
Midas
Вы знаете, что на хабре много людей ненавидят посты про битрикс?
И минусуют за них!
GHostly_FOX
Но ведь данный метод можно адаптировать под любую CMS дополнив ее системой блокировки.
Например сделать фиксацию времени хита и сделать расчет активности и при превышении активности добавлять в сессию флаг блокировки и если этот флаг есть в сессии то отправлять на такую страницу блокировки.
А Битриксовый код отправки запроса в Google легко можно заменить на curl