Битрикс защита веб-форм от спама

Судя по проектам реализованных на 1С-Битрикс, встроенная CAPTCHA очень легко обходится спам-ботами. Давайте разбираться какие есть варианты решения данной проблемы.

Есть несколько методом борьбы со спамом. Самый распространенный из них, это добавить еще одно поле, и скрыть его для пользователей в браузере. В самом же обработчике проверять «если поле заполнено, значит это спам бот и результат никуда не отправляем».

Защита от спама при помощи JS вообще не работает, все эти валидации хороши лишь для пользователя, чтобы он правильно вводил емейл или телефон по маске.

Рассмотрим способ через обработчик событий. Данный код добавляет исключение если в полях найдено слово ‘http’, при помощи которого так любят спам боты указывать ссылки на свои сайты. Давайте взглянем на него детальней

AddEventHandler('form', 'onBeforeResultAdd', 'my_onBeforeResultAdd');
function my_onBeforeResultAdd($WEB_FORM_ID, &$arFields, &$arrVALUES)
{
	global $APPLICATION;
	$spam = false;
	foreach($arrVALUES as $prop => $val) {
		if (strstr($prop, 'form_') && strstr($val, 'http')) {
			$spam = true;
			break;
		}
	}
	if ($spam == true) {
		$err_str = 'Запрещается указывать ссылки в полях формы!';
		$APPLICATION->ThrowException($err_str);
		return false;
	}
}

Исключение добавляется при помощи $APPLICATION->ThrowException(). Вы также можете усложнить логику применив проверку на $WEB_FORM_ID.

А какие способы борьбы со спамом знаете вы? Обязательно поделитесь ими с остальными в комментариях 🙂

автор: Dmitriy

Занимаюсь веб-разработкой с 2011 года. Посмотреть некоторые из моих работ, а также узнать чуть больше обо мне, вы можете на forwww.ru.

Какие услуги предоставляю:
- Создание сайтов, шаблонов и компонентов на 1С-Битрикс;
- Разработка функционала с нуля и доработка кода на уже созданных проектах;
- Адаптивная вёрстка макетов и натяжка на Битрикс;
- Парсинг файлов и выгрузка на сайт (форматы - CSV, XML, XLSX, JSON)
- Интеграции со сторонними сервисами по API;
- Многоязычные версии и многое другое.

Если у вас остались вопросы, свяжитесь со мной любым удобным для вас способом или оставьте комментарий внизу.
E-mail: dmitriyribka@gmail.com
Skype: cinemacreaterus

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *