Форма обратной связи html защита от спама

Как защитить форму на сайте от спама

Подвергнуться атаке спамеров может любой сайт, имеющий форму обратной связи. Это уязвимое место, которое позволяет ботам отправлять данные на сервер: делать инъекции, оставлять в комментариях вредоносные ссылки, регистрировать фальшивые аккаунты, захламлять базу данных мусорными контактами, ломая аналитику. Все коммерческие веб-проекты сталкиваются с этой проблемой. Инициатором спам-атаки может быть конкурент, хакер или обычный мошенник, желающий заработать на обмане. Чтобы не стать жертвой спам-ботов, нужно защищать веб-сайт от подобных операций. В статье мы расскажем, как это сделать с использованием капчи и без.

Защита с помощью CAPTCHA

Самая распространенная защита форм от спама — это капча (captcha). Капчей называется одна из разновидностей теста Тьюринга, который предназначен для различения людей и роботов. Вы не раз сталкивались с ней при регистрации на различных ресурсах. Вспомните, как вас просили ввести буквы/цифры с искаженных картинок или отметить фотографии, на которых присутствуют пожарные гидранты. Это и есть captcha.

Такая проверка позволяет отсеять примитивных ботов еще на этапе заполнения полей, поскольку они не могут решить задачку, а без этого форма просто не отправляется. Однако у многих веб-мастеров имеются претензии к капче по части юзабилити: может, она и защищает от спама, но раздражает настоящих пользователей. Стоит иметь это в виду.

Читайте также:  Sorting array elements in java

Тем не менее внедрить капчу на свой сайт — по-прежнему простой и рабочий способ защиты для форм обратной связи. Подключить ее можно бесплатно.

Бесплатные капча-сервисы: примеры

Существуют разные виды капчи. Она бывает графической, звуковой, математической, логической, образной. Выберите такой тип, который будет не слишком сложным для пользователей, но действенным против ботов: допустим, в формате «вопрос — ответ».

Вы можете воспользоваться специальными сервисами, которые предоставляют готовые варианты таких мини-тестов. Например:

  1. reCAPTCHA от Google . Можно использовать вторую версию (галочка «Я не робот») или третью, «невидимую», которая проводит незаметную проверку на основе поведения посетителя.
  2. hCAPTCHA . Бесплатный сервис, можно подключить к ВордПрессу, интегрировать с PHP, внедрить в Android-приложение.
  3. Akismet и другие плагины для WordPress.

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

  1. Рамки на время заполнения формы.
  2. Скрытое поле.
  3. Блокировка user-agent.
  4. Cookies для проверки уникальности посетителя.
  5. Фильтрация входящих данных.

Ниже мы подробнее расскажем о каждом способе защиты.

№1. Рамки на время заполнения формы

Люди и боты по-разному взаимодействуют с полями обратной связи: первым обычно нужно больше времени, потому что они вводят данные постепенно нажимая на клавиши. Спамеры же заполняют форму моментально, не печатая. Эту разницу можно использовать в качестве основы для защитного скрипта. Суть метода в том, чтобы установить определенные временные ограничения на заполнение form-полей. Если посетитель вписал информацию быстрее, чем прописано в условии скрипта, то он будет считаться ботом и сообщение от него не будет принято.

Но есть минус: функция автозаполнения повторяющихся полей, которая имеется во многих браузерах. Некоторые пользователи не печатают имя/фамилию и контакты самостоятельно, а используют для этого возможности веб-браузера. Таким образом, скрипт может принять человека за робота. Стоит также учитывать, что большинство ботов научились проходить эту процедуру с той же скоростью, что и люди, поэтому защищать сайт только с помощью такого сценария неэффективно. Но он хорошо работает в связке с другими.

№2. Скрытое поле

Как правило, роботы не выбирают, какие из полей в форме заполнять, а какие нет. Они автоматически вводят данные во все, чтобы не пропустить чек-боксы вроде «Я принимаю…». На этом и строится защита с помощью hidden-полей.

Алгоритм следующий: помимо стандартных «name», «email» нужно добавить дополнительное поле, например, «phone», и сделать его невидимым для пользователей. Для этого ему через стили присваивается атрибут display:none (он не принципиален, можно скрыть и другим способом, если умеете). В итоге обратная связь поступает в двух видах: реальная через открытые поля и спам через hidden. Пропишите условие, что делать с информацией во втором случае: например, вывести на страницу ошибку или, наоборот, сделать вид, что форма отправлена, но не принимать ее, чтобы запутать бота. Таким способом можно вполне успешно защищать сайт от мусорных спам-запросов. Правда, многие боты будут пытаться отправить данные во всех возможных вариантах, тогда потребуются другие инструменты противодействия.

№3. Блокировка user-agent

Еще одной отличительной чертой примитивных спам-роботов являются нестандартные заголовки user-agent. В интернете даже есть списки идентификаторов, которые более всего распространены среди спамеров. В качестве превентивной защиты можно найти их и заблокировать, чтобы боты с такими агентами не могли отправлять обратную связь на вашем веб-сайте. Также рекомендуем защитить форму от запросов, вообще не содержащих user-agent. Некоторые боты умеют подделывать этот заголовок, но во всяком случае вы сумеете обезвредить тех, кто на это не способен.

№4. Cookies для проверки уникальности посетителя

Если проверять куки-файлы пользователя, можно определить, является ли он уникальным. Реализовать защиту с использованием этого решения можно разными способами, самое простое — запретить исполнение формы более одного раза. Т. е. если обратная связь от посетителя уже была отправлена, повторно это сделать у него получится. Так можно защитить себя от недобросовестных конкурентов, которые спамят с целью испортить вам статистику. От многократных спам-запросов это тоже поможет, но только если злоумышленник не использует ботнет.

№5. Фильтрация входящих данных

Фильтровать данные, отправляемые через форму обратной связи, необходимо не столько для защиты от спама, сколько для исключения других опасных атак вроде SQL-инъекций. Но качественная валидация сумеет защитить и от простеньких ботов, которые заполняют поля случайными значениями. Задайте для данных конкретный формат, и тогда они элементарно не смогут выполнить условие.

Заключение

В сети существует множество киберугроз, и пусть спам — не самая опасная из них, при отсутствии защиты он способен сильно подпортить работу вашего сайта. Если вы собираете обратную связь от пользователей, мы особенно рекомендуем озаботиться вопросом спам-защиты. Эффективнее всего защищать формы сразу несколькими методами, чтобы закрыть как можно больше уязвимостей. В статье мы рассказали, что можно для этого использовать. Надеемся, она была для вас полезной.

Похожие статьи

Как защитить сайт от копирования текста

Уникальность контента на сайте является одним из главных факторов ранжирования. Поисковые системы продвигают в топ ресурсы с уникальным содержанием — если же на странице размещен чужой авторский текст, который просто скопировали с другого сайта, поисковики накладывают санкции. А в таком случае страдают не только «воры», но и авторы, ведь технически они предоставляют дублированную информацию. Кроме того, очень часто ПС считают первоисточником не тот сайт, который первым опубликовал текст, а тот, который раньше проиндексировали. Чтобы избежать этого, нужно выстроить защиту от плагиаторов. В статье мы расскажем, как защитить сайт от копирования текста десятью разными способами.

Как оформить страницу 404: примеры дизайнов

В процессе интернет-серфинга мы часто сталкиваемся с ошибкой 404 (Error 404 Not Found). Этот код означает, что на сайте нет страницы с таким адресом. Проблема может возникнуть по нескольким причинам: пользователь ввел неверный URL, информация была перемещена на другой веб-адрес, страницу удалили, произошел сбой на сервере. Чем крупнее ресурс и чем больше на нем веб-страниц, тем сложнее уследить за корректностью ссылок внутри него. Посетители натыкаются на ответ 404 и спешно покидают сайт, не найдя того, что искали. Это плохо влияет на показатели SEO. Избавиться от этой ошибки нельзя, но можно оформить ее так, чтобы она работала на вас. В статье мы расскажем, зачем и как это делают разные веб-проекты.

Как исправить ошибку «Ваше подключение не защищено»

Безопасность интернет-ресурса — один из главных критериев его качества и надежности. Поэтому, когда на сайте появляется ошибка «Ваше подключение не защищено», пользователи часто покидают его, а поисковые системы не позволяют веб-ресурсу занимать хорошие позиции в выдаче. «Соединение не защищено» — как исправить эту проблемы со стороны пользователя и владельца сайта? Рассказываем в подробной инструкции в статье.

Нажмите дважды, чтобы увеличить

Источник

Как предотвратить спам через форму обратной связи?

Есть сайт.
На нём 17 форм обратной связи. Все формы имеют одинаковый обработчик, за исключением небольших отличий.

С третьей формы ( Заявка на тимбилдинговую программу «Вместе мы сила» ) приходит спам — писем по 50 в день ( возможно чуть больше ).

На форме стоит маска номера : если не ввести номер, или ввести меньше нужного количества цифр — форма не отправится. Но,
спам отправляется невзирая на маску.

Письма спама, имеют такой вид :

Имя: 59ea099d6c60a Телефон: Почта: tanyabcook@sc.rr.com

Имена, разумеется постоянно разные ( произвольный набор цифр и букв ) и, с абсолютно разных почтовых ящиков.
Поле «телефон» — пустое ( хотя форма не должна отправлять пустое поле ).

Как можно избавится от спама ? Уже думал менять домен, но это сильно радикальный метод.

Простой 2 комментария

KorniloFF

lazalu68

Насколько я знаю, Akismet как раз предлагает подобный сервис — отправляете ему эти данные, а он вам говорит спам это или нет. Не знаю уж как он это делает, но работает нормально.

Zakonoposlushniy

onclick="document.getElementById('check').value = 'secretcode';"
if ($_POST['check'] != 'secretcode') exit('Spam decected');

Возможно кому-то поможет.
Удачи!

Alexey_R88

Пробую ваш метод. Но у меня почему-то когда сохраняю код в кнопке (onclick=»document.getElementBy. ) исчезает. И когда пробую отправить сообщение то пишет «Spam decected».
Кто знает почему так? Сайт на wp и форма написана через редактор.

Zakonoposlushniy

Alexey_R88, У вас одна форма или несколько?
Если несколько, то обратите внимание, что проверка идёт по ID, и с одной формы может всё прекрасно отправляться, а с другой выскакивать «Spam decected».

Вот доработанный вариант с более удобной проверкой по классу :

(function() < function handler(e) < var elem = e.target; //e.target - нажатый элемент, в нашем случае кнопка var parent = elem.parentElement; //родительский элемент - при такой разметке будет родительская форма var checkInput = parent.getElementsByClassName("check")[0]; //вытягиваем из divа первый нужный инпут checkInput.value = "secretcode"; //ставим нужное значение >var buttons = document.getElementsByClassName("Здесь пишем класс кнопки"); for (var i =0;i >)();
if ($_POST['check'] != 'secretcode') exit('Spam decected');
if ($_POST['check'] != 'secretcode') exit('Spam decected');

Zakonoposlushniy

Zakonoposlushniy

Просто Красавчик! Была такая же проблема! Все прописал как в инструкции! Пока вроде боты не беспокоят)

Zakonoposlushniy,
помогите, никак не могу понять, куда вставлять это:

(function() function handler(e) var elem = e.target; //e.target — нажатый элемент, в нашем случае кнопка
var parent = elem.parentElement; //родительский элемент — при такой разметке будет родительская форма
var checkInput = parent.getElementsByClassName(«check»)[0]; //вытягиваем из divа первый нужный инпут
checkInput.value = «secretcode»; //ставим нужное значение
>

var buttons = document.getElementsByClassName(«Здесь пишем класс кнопки»);
for (var i =0;i buttons[i].onclick = handler;
>
>)();

я так понял в файл с формой, но в какое место и в каких тэгах?
попробовал вставить в тэгах скрипт текст/яваскрипт внутри формы в конце и пробовал также сразу после нее, но не заработало.

и подскажите логику работы этого всего.

я правильно понял, что
1. по-умолчанию заполняю скрытое поле чек каким-то любым словом на свое усмотрение, или оставляю пустым.
2. дальше яваскрипт отслеживает нажати кнопки отправки формы и в этот момент вписывает в значение value скрытого поля кодовое слово по моему усмотрению
3. обработчик проверяет поменял ли бот слово ф скрытом поле на кодовое и если он слал через метод пост без браузера, то скорее всего не поменял и соответственно детектируем бот.
4. если же оно заполнено кодовым словом, то видимо человек постил через браузер, так как сработал наш яваскрипт по замене на кодовое слово по нажатии кнопки

Источник

Оцените статью