Создаем простую капчу для защиты формы обратной связи
Дата: 16 мая 2011
91791
47
Давным давно я уже писал, как создать самую примитивную капчу, для защиты формы обратной связи. Сегодня я решил немного переписать эту капчу.

Основные изменения касаются процесса передачи секретного кода для проверки пользовательского ввода. В прошлой статье, секретный код передавался в скрытом поле вместе с формой, что существенно снижало эффективность защиты от СПАМА, так как этот код можно было без проблем распарсить и вытащить.
Оптимальным вариантом передачи секретного кода являются сессии. Итак, как и в прошлой статье нам понадобятся 10 изображений с цифрами от 0 до 9, которые будут иметь названия аналогичные своим изображенным цифрам. Скачать архив с картинками можно здесь.
Теперь давайте создадим файл с названием captcha.class.php, который будет содержать класс Captcha для работы с капчей:
Данный класс будет иметь 3 метода:
- __construct() — конструктор (вызывается при инициализации класса)
- 2. draw() — будет выводить изображение на экран
- 3. getKeyString() — возвращает секретный код
Итак, в __construct() нам необходимо сгенерировать секретный код и записать его в виде массива в переменную $this->keystring
public function __construct()< $this->keystring=array(); for($i=0;$i < $this->length;$i++)< $this->keystring[] .= mt_rand(0,9); > >
Теперь чтобы вывести изображения на экран, необходимо пройтись по этому массиву и сгенерировать html-код картинок:
public function draw()< $img = ''; foreach($this->keystring as $keystring)< $img .= ''; > return $img; >
Ну и для того чтобы получить этот секретный код используем метод getKeyString(), который записывает в одну строку сгенерированный массив
public function getKeyString()< return implode($this->keystring); >
Теперь чтобы воспользоваться этим классом и защитить Вашу форму обратной связи, необходимо создать еще один файлик и назвать его captcha.php. Он будет иметь следующий код:
require "captcha.class.php"; //Подключаем класс капчи //Инициализируем капчу $captcha = new Captcha(); $_SESSION['keystring'] = $captcha->getKeyString(); echo $captcha->draw();
Первым делом запускаем сессию, инициализируем капчу. Затем записываем в сессию значение keystring, которое будет содержать секретный код и выводим изображения на экран.
Теперь в нужном Вам месте, где Вы хотите видеть капчу необходимо просто подключить файл captcha.php и запустить сессию. Делается это так:
Введите имя:
Введите email:
Введите сообщение:
Введите числа с картинки:
Чтобы проверить правильность ввода капчи, необходимо в обработчике сделать следующую проверку:
if (isset($_POST[‘pr’]) && $_POST[‘pr’] == $_SESSION[‘keystring’]) < Проверка прошла успешно >else
Скачать исходники можно здесь
Ну вот собственно и все! Удачи!
Новая RECAPTCHA от Google в формы заказа и обратной связи
Ранее, в системе управления UralCMS была реализована защитой от спама, с помощью проверочного кода. Теперь, появилась новая возможность защитить сайт от интернет-ботов: подключением Recaptcha от Google.
Чтобы установить Recaptcha, перейдите в настройки формы обратной связи, заказа или корзины.
Нажмите в правом верхнем углу кнопку «Добавить элементы«.
Далее, на открывшейся панели выберите «Капча (антиспам)«.

Выберите актуальные на сегодня Recaptcha v2 или v3. Вторая версия проверяет запросы с помощью заданий, третья версия осуществляет проверку исходя из учета действий пользователя .
Recaptcha применима для формы обратной связи, формы заказа в каталоге услуг, корзине, а также формы быстрого заказа в 1 клик в интернет-магазине.
Работает recaptcha следующим образом:
Регистрием капчу на сайте: https://www.google.com/recaptcha/admin/create, заполняем необходимые данные, получаем специальные ключи для системы управления, указываем их в настройках.
В результате, при оформлении заказа или отправке сообщения, будет выводится Recaptcha от Google.
Капча для Contact Form 7 и защита от спама формы обратной связи (все нюансы)

До недавних пор я даже не интересовался какие существуют плагины антиспама в Contact Form 7 потому что проверенная годами связка с Captcha от BestWebSoft работала как часы. Однако недавно разработчики, продвигая свой личный модуль обратной связи, перевели поддержку Contact Form7 в платную PRO версию. Хотя на самом деле это не такая уж и большая проблема, т.к. в самой форме имеется встроенная интеграция официальной Google Captcha. Единственный минус этого подхода (как по мне) в использовании 3-тьей версии капчи без возможности отката до предыдущей.
Итак, первым делом, чтобы внедрить защиту от спама в Contact Form 7 для WordPress сайта, мы после установки плагина обратной связи переходим в его подраздел “Интеграция”.

Здесь в блоке reCAPTCHA имеется на официальный сайт этой капчи. Переходите по ссылке, где представлена краткая информация и самой технологии и ее использованию. Там же на странице будет кнопка «Admin Console», позволяющую залогиниться в свой Гугл-аккаунт или для перехода на регистрацию новой учетной записи.
В личном кабинете находите иконку “+” для создания/добавления нового веб-ресурса. После нажатия увидите следующую форму:

- Указываете ярлык капчи (внутреннее название).
- Выбираете тип защиты. Да, сейчас есть супер модная версия 3 с автоматическим определением ботов, но мне больше нравится метод по старинке с ручным вводом «Я не робот».
- Внизу соглашаетесь с правилами использования и ставите галочку о получении уведомлений, если на сайте будут возникать какие-то проблемы (еще один плюс данной Contact Form 7 капчи).
На следующем шаге вам выдадут 2 значения:
- ключ сайта;
- секретный ключ.
Можете записать их в какой-то файл или временно не закрывать данное окно.
Возвращаемся в наш модуль обратной связи и кликаем по кнопке «Настройка интеграции» (см. первый скриншот выше). На открывшейся странице вводите свои ключи.

Включение reCAPTCHA в Contact Form 7 (v3 или v2)?
Теперь мы приходим к самому интересному – как поставить капчу в Contact Form 7. И тут важным моментом есть то, какой именно вариант защиты вы выбрали. Сейчас Гугл продвигает третью версию и разработчик модуля внедрил именно ее (как передовую технологию). Однако, если почитать форум поддержки в репозитории, то можно увидеть отзывы многих пользователей о том, что данный антиспам фильтр не всегда хорошо справляется.
В общем, если вы решили применять reCAPTCHA v3, то никакие дополнительные настройки после ввода ключей делать не нужно. Вам даже не требуется размещать в форме шорткод [recaptcha], который теперь просто игнорируется. Скрипт капчи работает сразу «из коробки» и самостоятельно в фоновом режиме будет определять является человек реальным или ботом.
Плагин Contact Form 7 – reCaptcha v2

Как я уже говорил выше, новой технологии пока не доверяю, поэтому нашел для себя модуль, совместимый с reCAPTCHA v2. Из его однозначных плюсов выделю: активную и быструю работу над ошибками, более 70к загрузок, простота подключения. Скачивайте отсюда либо ставьте сразу из WP-админки.
После его активации вам нужно:
1. Зайти в раздел «Contact Form 7» — пункт «Версия reCaptcha», где выбираете вторую (источник, как и был по умолчанию, остается google.com).

2. Кликаем по кнопке “Отправить”.
3. Далее открываем для редактирования нужную форму и добавляем перед кнопкой отправки шорткод [recaptcha]. Сохраняем настройки и проверяем результат на вебсайте.
Для шорткода, кстати, есть несколько доп.параметров.

Дополнительные нюансы. Если вдруг по какой-то причине автор забросит этот замечательный плагин, то выбирая среди всех остальных плагинов для капчи в Вордпресс с подобными функциями я бы посоветовал попробовать Advanced noCaptcha & invisible Captcha (v2 & v3) (находится тут). Его аналогично часто упоминают как альтернативу, но баги там исправляются чуть менее быстро (хотя также имеется 70к скачиваний).
Если вы используете в работе Flamingo, то я бы настоятельно рекомендовал ставить капчу на Contact Form 7 ибо спам в данном случае изначально фильтруется через Akismet. И когда последний у вас не настроен, то ооочень многие реальные сообщения из формы помечаются как спам. Если я правильно понял, форма в первую очередь ориентируется на Akismet, когда в проекте нет более серьезного решения от Гугла. В общем, тут еще надо тестировать всякие нюансы, но чтобы бы вы не выбрали без антиспама Flamingo лучше не оставлять.
Понравился пост? Подпишись на обновления блога по
RSS,
Email или
twitter!

Оцените статью:
(голосов — 15, средний балл: 5,20 из 7)
Категории: Плагины;
Теги: антиспам плагин, защита сайта, настройки плагина, полезные плагины, спам в блоге.
Похожие статьи:
- Лучшие плагины для капчи в WordPress
- Удаление пользователей WordPress и защита при регистрации
- Новый Akismet сменил принцип получения API ключа
- Плагин Antispam Bee против спама в wordpress вместо WP-SpamFree
- Math Captcha — математическая капча в WordPress
Как защитить сайт и форму обратной связи от спама
Понять, что сайт атаковали спам-боты, просто — в комментариях появляются ссылки на подозрительные веб-ресурсы и база данных активно начинает пополняться недействительными контактами. Все это приводит к тому, что компания остается без лидов, не может провести адекватную аналитику сайта, теряет доверие пользователей и поисковых систем. Появляются и более серьезные последствия: веб-страницы загружаются медленно, пользователи жалуются, а злоумышленники становятся на шаг ближе к взлому сервера. Нужно проверить безопасность сайта и форм обратной связи и предпринять актуальные меры по блокировке спам-ботов. В статье разбираем действенные методы защиты от спама.

Защита от спама с помощью капчи
Капча (captcha) — инструмент, с помощью которого можно определить, кем является пользователь, отправляющий на сервер заполненную форму обратной связи (или другое сообщение), — человеком или искусственным интеллектом. В основу проверки заложен тест Тьюринга. Люди и спам-боты выполняют различные задания: выбирают из подборки изображений картинки с определенным предметом (светофором, пожарным гидрантом), решают математические примеры, собирают пазлы и так далее. Тест составлен таким образом, чтобы человек и спам-программа справлялись с ним с разным успехом. Живой пользователь должен без труда решить задачу в отличие от искусственного интеллекта.

Установка капчи — самый простой способ защиты от спама. Его легко внедрить, и он не требует от пользователей больших усилий для прохождения. Captcha является идеальным вариантом для сайтов с небольшой посещаемостью, для которых более сложные методы верификации пользователей будут неоправданно сложными. Можно создать капчу самостоятельно или воспользоваться готовыми решениями от известных сервисов, например поисковых систем и CMS. Моделируя задание, не стоит забывать об удобстве реальных пользователей: тесты, отнимающие много времени, могут вызвать раздражение и отказ от взаимодействия с сайтом. Ниже мы подробнее расскажем о самых популярных капча-сервисах, а также покажем, как установить их на свой сайт.
reCAPTCHA
Это бесплатный сервис, который защищает сайт от спама, используя передовые методы анализа, чтобы отличить людей от ботов. С 2009 года reCAPTCHA принадлежит компании Google. На текущий момент существует две популярные версии этой капчи — v2 и v3.
Сравнение версий:
Проверяет запросы с помощью заданий.
Выполняет проверку с учетом оценок пользователя на веб-сайте.
Пример: при отправке формы попросит пользователя поставить флажок возле надписи «Я не робот».
Пример: фактически проверка является невидимой для обычных пользователей, а на сайте будет висеть логотип, что сайт защищен от спама с помощью reCAPTCHA.
Особенности: некоторые задания могут оказаться слишком сложными и негативно отразиться на конверсии сайта.
Особенности: Google скрывает принципы работы алгоритмов, связанных с reCAPTCHA v3, поэтому сложно сказать, насколько точно будет поставлена оценка в определенных моментах.
Прежде чем установить reCAPTCHA на сайт, необходимо зарегистрировать домен на официальном сайте. На странице нужно заполнить ярлык (понятное название), тип капчи (v2 или v3), выбрать домены (сайты, где будет установлена капча).

Далее вы получите два ключа:
- Ключ сайта — используйте этот ключ в HTML-коде, который ваш сайт передает на устройства пользователей.
- Секретный ключ — используйте этот ключ для обмена данными между сайтом и сервисом reCAPTCHA.
Они понадобятся для дальнейшей настройки.

Установка на сайт «reCAPTCHA v2»
Чтобы автоматически отображать виджет reCAPTCHA v2 на сайте, необходимо включить необходимый JavaScript и «g-recaptcha» тег. Тег «g-recaptcha» представляет собой элемент DIV с именем класса «g-recaptcha» и ключом вашего сайта в «data-sitekey» атрибуте:
reCAPTCHA demo: Simple page
Обратите внимание, скрипт должен быть загружен по протоколу HTTPS и может быть включен из любой точки страницы без ограничений.
Установка на сайт «reCAPTCHA v3»
Чтобы автоматически привязывать вызов reCAPTCHA v3 к кнопке, выполните последовательность действий:
-
Загрузите API JavaScript.
function onSubmit(token)
hCaptcha
Еще один сервис по борьбе со спамом — hCaptcha. К преимуществам hCaptcha относят то, что у сервиса есть бесплатная подписка, а также он собирает минимум необходимой информации о пользователях. Это отличная альтернатива reCAPTCHA. Чтобы установить hCaptcha на своем проекте, необходимо зарегистрироваться на официальном сайте. После регистрации вы получите уже знакомые:
- Sitekey — для уникальной идентификации ваших сайтов.
- Secret — этот ключ используется вашим сервером для проверки пароля hCaptcha, который возвращается, когда пользователь успешно вводит капчу.

Как установить hCaptcha на сайт?
- Для сайта на WordPress используйте плагин «hCaptcha for WordPress».
- Для интеграции с PHP используйте эту инструкцию.
- Для Android используйте эту инструкцию.
- Другие методы интеграции описаны здесь.
Как установить капчу, если сайт работает на CMS
Самый простой способ установить капчу, если сайт работает на CMS — с помощью плагинов. Покажем, как это сделать на примере WordPress. Перейдите в раздел «Плагины» > «Добавить новый». В поиске введите слово «recaptcha». Популярные плагины для установки капчи на WordPress:
- Advanced Google reCAPTCHA;
- Simple Google reCAPTCHA;
- ReCaptcha v2 for Contact Form 7.
Установите и активируйте плагин на выбор. Настройка любого плагина не займет много времени — она простая и интуитивно понятная.

Плагин, включающий капчу в Joomla3, называется «CAPTCHA — reCAPTCHA». По умолчанию он отключен. Откройте панель управления сайтом и перейдите в «Расширения» > «Менеджер плагинов». Найдите необходимый плагин и отредактируйте его:
- Статус: установлено значение «Включено».
- Версия: выберите 2.0.
- Ключ сайта и секретный ключ: скопируйте и вставьте ключ сайта и секретный ключ, предоставленные Google reCAPTCHA, в соответствующие поля.
- Тема: выберите одну из 2 доступных тем.
Нажмите «Сохранить и закрыть».

Методы защиты от спама без капчи
Методы защиты сайта от спама постоянно совершенствуются. Вместе с ними развиваются и технологии обхода механизмов безопасности. Спамеры находят новые уязвимости и совершенствуют свои программы по распространению мусорного контента. Капча помогает распознать и отправить в черный список ботов. Однако многие спам-программы уже умеют проходить тесты на «человечность». Поэтому лучше использовать сразу несколько инструментов защиты.
Исключение автоматической регистрации аккаунтов
Спам-аккаунты засоряют базу данных сайта и повышают успех публикации мусорного контента, когда для этого необходима авторизация на веб-ресурсе. Существует несколько способов ограничить появление аккаунтов, созданных с помощью автоматического скрипта:
- создание капчи;
- запрос подтверждения адреса электронной почты;
- блокировка email-адресов, находящихся в небезопасных доменах.
Включение функции модерации
Модерация — проверка перед публикацией контента, созданного пользователем. При этом не обязательно читать все материалы. Можно установить обязательную модерацию только для публикаций, оставленных новыми пользователями. Кроме того, можно настроить автоматический запрет на отправку анонимных комментариев. Другим действенным способом будет наделение особым правом на публикацию ссылок пользователей с определенной репутацией.
Выявление и удаление спам-аккаунтов
Выявить спам-аккаунты поможет анализ записей в журнале веб-сервера. У учетных записей, созданных с помощью автоматического скрипта, есть отличительные признаки:
- массовость регистрации — появление большого количества аккаунтов за короткий промежуток времени;
- никнеймы пользователей, содержащие рекламные фразы, названия сторонних веб-ресурсов, формулировки поисковых запросов — «купить цветы дешево», «смотреть сериалы онлайн»;
- запросы с нескольких устройств, входящих в один диапазон IP.
Отдельный каталог для контента, создаваемого пользователями
Если контент, содержащий спам, разбросан по разным каталогам, его сложнее сразу найти. Нужно оптимизировать сайт таким образом, чтобы пользовательский контент собирался в отдельном каталоге.
Защита от спам-ботов с помощью скрытого поля
Hidden-поля — скрытые в коде сайта поля, которые пользователь не может заполнить по причине их невидимости на веб-странице. Зато эта задача по силам спам-ботам, сканирующим код сайта. В код добавляется условие о появлении ошибки в том случае, если при отправке формы было заполнено невидимое поле. Сообщение отклоняется и спам-программа блокируется.
- Создание стандартных полей для формы обратной связи — «name», «phone».
- Создание дополнительного поля, например «email», и присвоение ему невидимости при помощи стилей. Hidden-поле имеет атрибут «display: none».
- Указание условия в обработчике формы: если поле «email» заполнено, то возникает сообщение «Ошибка. Подозрение на спам!».
Боты могут попытаться обойти проверку, отправив на сервер несколько сообщений, в каждом из которых будут заполнены и оставлены пустыми разные поля. Поэтому данный метод подойдет в качестве дополнительной проверки, а не самостоятельной защиты от спама.
Заключение
Технологий защиты сайта от спама много. Перед тем как выбрать подходящий метод, убедитесь, что он не потерял свою эффективность. Ко многим популярным инструментам по обеспечению безопасности спамеры со временем подбирают ключ, и они утрачивают свою актуальность. Если у вас есть толковый специалист, защитите свой веб-ресурс несколькими способами, но не забывайте при этом о юзабилити.
'; > return $img; >