Я пытаюсь придумать достаточно хороший механизм защиты от спама, чтобы предотвратить автоматически сгенерированный ввод. Я читал такие техники, как captcha, 1 + 1 =? все работает хорошо, но они также представляют собой дополнительный шаг, препятствующий быстрому бесплатному использованию приложения (я не ищу ничего подобного, пожалуйста).
Я пробовал установить некоторые скрытые поля во всех моих формах, display: none;
однако я уверен, что сценарий можно настроить для отслеживания этого идентификатора поля формы и просто не заполнять его.
Вы внедряете / знаете о хорошем методе борьбы с автоматическим заполнением форм роботами? Есть ли что-то, что можно сделать без проблем с обработкой HTML И / ИЛИ на стороне сервера и быть (почти) пуленепробиваемым? (без JS, так как его можно было просто отключить).
Я стараюсь не полагаться на сеансы для этого (т.е. подсчитывать, сколько раз нажимается кнопка, чтобы предотвратить перегрузки).
Ответы:
Простой в реализации, но небезопасный (особенно в отношении «конкретных» атак) способ решения проблемы защиты от спама - это отслеживание времени между отправкой формы и загрузкой страницы.
Боты запрашивают страницу, анализируют страницу и отправляют форму. Это быстро.
Люди вводят URL-адрес, загружают страницу, ждут, пока страница полностью загрузится, прокручивают вниз, читают контент, решают, комментировать / заполнять форму, требуют времени для заполнения формы и отправки.
Разница во времени может быть незначительной; и как отслеживать это время без файлов cookie, требуется какой-то способ серверной базы данных. Это может сказаться на производительности.
Также вам нужно настроить пороговое время.
источник
Я на самом деле считаю, что простое поле для медовых горшков хорошо работает. Большинство ботов заполняют все поля формы, которые они видят, надеясь обойти обязательные валидаторы полей.
http://haacked.com/archive/2007/09/11/honeypot-captcha.aspx
Если вы создаете текстовое поле, скрываете его в javascript, а затем проверяете, что значение на сервере пустое , это отсеивает 99% роботов и не вызывает у 99% пользователей никакого разочарования. Оставшийся 1% с отключенным javascript все равно будет видеть текстовое поле, но вы можете добавить сообщение типа «Оставьте это поле пустым» для таких случаев (если они вам вообще небезразличны).
(Также отмечу, что если вы укажете style = "display: none" в поле, то для робота будет слишком легко просто увидеть это и отбросить поле, поэтому я предпочитаю подход javascript).
источник
Что если - Бот не находит
form
?3 примера:
Создайте
form.html
и разместитеform
внутри<div id="formContainer">
элемента.Внутри страницы, где вам нужно вызвать эту форму, используйте пустой
<div id="dynamicForm"></div>
и этот jQuery:$("#dynamicForm").load("form.html #formContainer");
$_POST["email"]
должен быть пустым (без какого-либо значения)! В противном случае не отправляйте форму.<input name="sender" type="text" placeholder="Your email">
после (!) В «бот-приманки» вход для фактического адреса электронной почты пользователя.Благодарности:
Developer.Mozilla - Отключение автозаполнения форм
StackOverflow - Игнорировать Tabindex
источник
autocomplete=nope
что по умолчаниюon
;-) MDN: input # attr-autocompleteautocomplete="oh sunny day"
по этому поводу.Я использовал скрытое поле и поместил на него отметку времени, а затем сравнил ее с отметкой времени на сервере с помощью PHP.
Если это было быстрее 15 секунд (зависит от размера ваших форм), то это был бот.
Надеюсь на эту помощь
источник
$.post
отправляет все во внешний php файл. 3) во внешнем php снова получить время сервера и сравнить со временем сеанса?Очень эффективный способ практически избавиться от спама - создать текстовое поле с текстом, например «Удалите этот текст, чтобы отправить форму!» и этот текст необходимо удалить, чтобы отправить форму.
После проверки формы, если текстовое поле содержит исходный текст или любой случайный текст в этом отношении, не отправляйте форму. Боты могут читать имена форм и автоматически заполнять поля «Имя» и «Электронная почта», но не знают, действительно ли им нужно удалять текст из определенного поля для отправки.
Я применил этот метод на нашем корпоративном сайте, и он полностью устранил спам, который мы получали ежедневно. Это действительно работает!
источник
Как насчет создания поля ввода текстового поля того же цвета, что и фон, который должен оставаться пустым. Это позволит обойти проблему чтения бота: нет
источник
http://recaptcha.net/reCAPTCHA - это бесплатный сервис антиботов, который помогает оцифровывать книги
Приобретена Google (в 2009 году):
Также см
источник
Многие из этих спам-ботов - это просто серверные скрипты, которые бродят по сети. Вы можете бороться со многими из них, используя некоторый javascript для управления запросом формы перед его отправкой (т.е. устанавливая дополнительное поле на основе некоторой клиентской переменной). Это не полное решение и может привести к множеству проблем (например, у пользователей без javascript, на мобильных устройствах и т. Д.), Но это может быть частью вашего плана атаки.
Вот банальный пример ...
Где-то в вашем php скрипте ...
Кроме того, капчи - отличное средство и действительно лучшая защита от спама.
источник
Я удивлен, что никто еще не упомянул этот метод:
Плюсы:
Минусы:
Например, этот метод используется плагином WordPress для файлов cookie для комментариев .
источник
С появлением безголовых браузеров (таких как phantomjs), которые могут эмулировать что угодно, вы не можете предположить, что:
Если раньше это было правдой, теперь это неправда.
Если вам не подходит удобное для пользователя решение, просто дайте им красивую кнопку отправки «Я спамер» :
Конечно, вы можете играть с двумя
input[type=image]
кнопками с изображениями , изменяя порядок после каждой загрузки, варианты текста, содержимое изображений (и их размер) илиname
кнопки; что потребует некоторой работы с сервером.По причинам доступности вы должны указать правильную текстовую альтернативу, но я думаю, что длинное предложение лучше для пользователей программ чтения с экрана, чем считаться ботом.
Дополнительное примечание: эти примеры показывают, что понимание английского (или любого другого языка) и необходимость сделать простой выбор сложнее для спам-бота, чем: ждать 10 секунд, обрабатывать CSS или javascript, знать, что поле скрыто, имитировать движение мыши или эмуляция набора текста с клавиатуры, ...
источник
Очень простой способ - предоставить несколько полей, например,
<textarea style="display:none;" name="input"></textarea>
и отбросить все ответы, в которых они были заполнены.Другой подход - сгенерировать всю форму (или только имена полей) с помощью Javascript; немногие боты могут его запустить.
В любом случае, вы мало что сделаете против живых «ботов» из Тайваня или Индии, которым платят 0,03 доллара за одну размещенную ссылку и зарабатывают этим на жизнь.
источник
У меня есть простой подход к остановке спамеров, который на 100% эффективен, по крайней мере, по моему опыту, и позволяет избежать использования reCAPTCHA и подобных подходов. Я перешел от почти 100 спама в день в html-формах одного из моих сайтов до нуля за последние 5 лет, как только я реализовал этот подход.
Он работает, используя возможности электронной почты ALIAS большинства сценариев обработки html-форм (я использую FormMail.pl), а также графический «код» отправки, который легко создается в самых простых графических программах. Один из таких рисунков включает код M19P17nH и подсказку «Введите код слева».
В этом конкретном примере используется случайная последовательность букв и цифр, но я предпочитаю использовать неанглийские версии слов, знакомых моим посетителям (например, «пнофртай»). Обратите внимание, что подсказка для поля формы встроена в графику, а не появляется в форме. Таким образом, для робота это поле формы не дает ключа к разгадке его предназначения.
Единственная реальная уловка здесь - убедиться, что ваша форма html назначает этот код переменной «получатель». Затем в вашей почтовой программе убедитесь, что каждый такой код, который вы используете, установлен как псевдоним электронной почты, который указывает на любые адреса электронной почты, которые вы хотите использовать. Поскольку в форме нет каких-либо подсказок для чтения роботом и нет адресов электронной почты, он не знает, что вводить в пустое поле формы. Если он ничего не помещает в поле формы или что-то еще, кроме допустимых кодов, отправка формы завершается ошибкой «неверный получатель». Вы можете использовать разную графику в разных формах, хотя, по моему опыту, в этом нет необходимости.
Конечно, человек может решить эту проблему в мгновение ока, без всех проблем, связанных с reCAPTCHA и подобными, более элегантными схемами. Если человек-спамер реагирует на ошибку получателя и программирует код изображения в роботе, вы можете легко изменить его, как только поймете, что робот был жестко запрограммирован для ответа. За пять лет использования этого подхода я ни разу не получил спама ни от одной из форм, в которых я его использую, и ни разу не получил жалоб от любого человека, использующего формы. Я уверен, что с этим можно справиться с помощью функции распознавания текста в роботе, но у меня никогда не случалось этого ни на одном из моих сайтов, использующих html-формы. Я также использовал «ловушки для спама» (скрытый html-код «иди сюда», указывающий на мои политики защиты от спама), но они были эффективны только на 90%.
источник
Я думаю о многом здесь:
источник
Другой вариант вместо использования случайных букв и цифр, как это делают многие веб-сайты, - это создание случайных изображений узнаваемых объектов. Затем попросите пользователя ввести либо цвет изображения на картинке, либо сам объект.
В общем, у каждого решения будут свои преимущества и недостатки. Вам придется найти золотую середину между тем, насколько сложно пользователям пройти механизм защиты от спама, и количеством спам-ботов, которые могут пройти.
источник
Роботы не могут выполнять JavaScript, поэтому вы делаете что-то вроде внедрения какого-то скрытого элемента на страницу с помощью JavaScript, а затем обнаруживаете его присутствие перед отправкой формы, но будьте осторожны, потому что у некоторых из ваших пользователей также будет отключен JavaScript.
В противном случае, я думаю, вы будете вынуждены использовать форму клиентского доказательства «человечности».
источник
Лучшее решение, которое я нашел, чтобы избежать спама со стороны ботов, - это использование очень тривиального вопроса или поля в вашей форме.
Попробуйте добавить такое поле:
Эти уловки требуют, чтобы пользователь понимал, что нужно ввести в форму, что значительно усложняет задачу массового заполнения форм ботами.
РЕДАКТИРОВАТЬ
Обратная сторона этого метода, как вы указали в своем вопросе, является дополнительным шагом для пользователя для проверки его формы. Но, на мой взгляд, это намного проще, чем капча, и накладные расходы при заполнении формы составляют не более 5 секунд, что с точки зрения пользователя кажется приемлемым.
источник
На сайте JQuery есть руководство по этому поводу. Хотя это JQuery, идея не зависит от фреймворка.
Если JavaScript недоступен, возможно, вам придется вернуться к подходу типа CAPTCHA.
источник
Я нашел простой способ сделать это - поместить поле со значением и попросить пользователя удалить текст в этом поле. поскольку боты их только заполняют. если поле не пустое, это означает, что пользователь не человек, и оно не будет опубликовано. это та же цель, что и код капчи.
источник
Это просто идея, id использовал это в моем приложении и хорошо работает
вы можете создать cookie при движении мыши с помощью javascript или jquery, а на стороне сервера проверить, существует ли cookie, потому что только люди имеют мышь, cookie могут быть созданы только ими, cookie может быть меткой времени или токеном, который можно проверить
источник
Используйте 1) форму с токенами 2) Проверьте форму для формирования задержки с IP-адресом 3) Блокируйте IP (необязательно)
источник
По моему опыту, если это просто «контактная» форма, вам не нужны особые меры. Спам прилично фильтруется службами веб-почты (вы можете отслеживать запросы веб-форм с помощью серверных скриптов, чтобы увидеть, что эффективно достигает вашей электронной почты, конечно, я предполагаю, что у вас есть хорошая веб-почта: D)
Я не думаю, что это хорошо. На самом деле, я хочу получать электронные письма от пользователей, которые совершают определенные действия, потому что это те пользователи, которые мне интересны (например, пользователи, которые просмотрели страницу «CV» и использовали правильный контакт форма). Поэтому, если пользователь делает что-то, что я хочу, я начинаю отслеживать его сеанс и устанавливаю файл cookie (я всегда устанавливаю cookie сеанса, но когда я не начинаю сеанс, это просто поддельный файл cookie, созданный для того, чтобы поверить, что у пользователя есть сеанс). Если пользователь делает что-то нежелательное, я не беспокоюсь о том, чтобы сохранить для него сеанс, чтобы не перегружать и т.
Также для меня было бы хорошо, если бы рекламные службы предлагали какой-то api (возможно, он уже существует), чтобы увидеть, «посмотрел ли пользователь на рекламу», вполне вероятно, что пользователи, просматривающие рекламу, являются настоящими пользователями, но если они не ну, по крайней мере, вы все равно получите 1 просмотр, так что ничего не потеря. (и поверьте мне, средства управления рекламой сложнее, чем все, что вы можете сделать в одиночку)
источник
На самом деле ловушка с дисплеем: никто не работает как шарм. Это помогает переместить объявление CSS в файл, содержащий любые глобальные таблицы стилей, что заставит спам-ботов загружать и их (прямое объявление style = "display: none;", вероятно, может быть интерпретировано спам-ботом, как и объявление локального стиля в самом документе).
Это в сочетании с другими контрмерами должно сделать невозможным выгрузку мусора спам-ботами (у меня есть гостевая книга, защищенная множеством мер, и до сих пор они попались на мои основные ловушки - однако, если какой-либо бот обойдет их, там готовы ли другие сработать).
Я использую комбинацию поддельных полей формы (также описываемых как недопустимые поля в случае, если используется браузер, который не обрабатывает CSS в целом или не отображает: в частности), проверки работоспособности (т. Е. Формат ввода действительно?), отметка времени (как слишком быстрая, так и слишком медленная отправка), MySQL (для создания черных списков на основе электронной почты и IP-адресов, а также фильтров флуда), DNSBL (например, SBL + XBL от Spamhaus), анализ текста ( например, слова, которые являются явным признаком спама) и проверочные электронные письма (чтобы определить, действителен ли предоставленный адрес электронной почты).
Одно примечание о проверочных письмах: этот шаг полностью необязателен, но когда кто-то решает его реализовать, этот процесс должен быть максимально простым в использовании (то есть он должен сводиться к щелчку ссылки, содержащейся в электронном письме. ) и внести соответствующий адрес электронной почты в белый список на определенный период времени, чтобы избежать последующих проверок в случае, если пользователь захочет разместить дополнительные сообщения.
источник
Я использую метод, в котором есть скрытое текстовое поле. Поскольку боты разбирают сайт, они, вероятно, его заполняют. Затем я проверяю, пуст ли он, если это не сайт, возвращается обратно.
Добавьте подтверждение по электронной почте. Пользователь получает электронное письмо, и ему нужно щелкнуть ссылку. В противном случае через некоторое время сбросьте пост.
источник
Я добавил в свои формы проверку времени. Формы не будут отправлены, если заполнены менее чем за 3 секунды, и это отлично сработало для меня, особенно для длинных форм. Вот функция проверки формы, которую я вызываю при нажатии кнопки отправки.
источник
С появлением все более изощренных спам-ботов и таких технологий, как автоматические браузеры, становится все труднее определять источник спама. Но независимо от того, отправляется ли он программным обеспечением, человеком или обоими, спам является спамом из-за своего содержания. Я думаю, что лучшим решением будет запускать размещенный контент через API для защиты от спама, например Cleantalk или Akismet. Это относительно дешево и эффективно и не беспокоит пользователя. Вы можете проверить время отправки формы и другие традиционные проверки на предмет менее сложных ботов, прежде чем использовать API.
источник
Вы можете попытаться обмануть спам-роботов, добавив правильный атрибут действия после проверки Javascript. Если робот блокирует Javascript, он никогда не сможет правильно отправить форму.
HTML
JAVASCRIPT
Затем я добавляю «обратный вызов» после .attr (), чтобы предотвратить ошибки.
источник
Всего мои пять центов. Если цель этого - остановить 99% роботов, что звучит неплохо, и если 99% роботов не могут запустить Java-скрипт, лучшее решение, которое превосходит все, - просто не использовать форму, которая имеет действие отправки с URL сообщения.
Если форма управляется с помощью java-скрипта, а java-скрипт собирает данные формы и затем отправляет их через HTTP-запрос, никакой робот не может отправить форму. Поскольку кнопка отправки будет использовать Java-скрипт для запуска кода, отправляющего форму.
источник