Кто и как борется со спамом?
Нужен совет.
Кто и как борется со спамом на email в modx при использовании ajaxform и formit?
Или даже без привязки к modx а просто, какие действенные способы борьбы вы знаете?
У меня много сайтов на modx и везде установлена recaptcha 3 версии и плюс проверка того, что скрытый input в форме остается пустым. Но спам все равно идет и не мало. За день с каждого сайта может приходить до 50 спам-писем. Заметил, что спам на сайтах становится сильнее, если наши СЕО специалисты начинаю продвигать проект, потом спадает, затем снова усиливается, и только на совсем забытых и заброшенных проектах он отсутствует совсем (как впрочем и обращения от людей).
Есть около 10 ка сайтов на битриксе — там тоже самое, никакие встроенныев битрикс каптчи или подключение гугл каптч — не помогают от слова совсем.
На сайтах которые я делаю с нуля на микрофремворке slim я использую следующее решение — я верстаю форму не используя тег form. Ведь все равно обработчики я пишу свои на javascript и мне не нужно чтобы форма была классической. И это помогает на самом деле, такие формы остаются незамеченные спам ботами.
Но такой подход или нельзя или довольно проблематично использоваться с ajaxform и formit, ведь они нацелены на событие submit, которое возникает при отправке формы.
Поэтому и интересно, что применяют коллеги и как воюют со спамом?
Кто и как борется со спамом на email в modx при использовании ajaxform и formit?
Или даже без привязки к modx а просто, какие действенные способы борьбы вы знаете?
У меня много сайтов на modx и везде установлена recaptcha 3 версии и плюс проверка того, что скрытый input в форме остается пустым. Но спам все равно идет и не мало. За день с каждого сайта может приходить до 50 спам-писем. Заметил, что спам на сайтах становится сильнее, если наши СЕО специалисты начинаю продвигать проект, потом спадает, затем снова усиливается, и только на совсем забытых и заброшенных проектах он отсутствует совсем (как впрочем и обращения от людей).
Есть около 10 ка сайтов на битриксе — там тоже самое, никакие встроенныев битрикс каптчи или подключение гугл каптч — не помогают от слова совсем.
На сайтах которые я делаю с нуля на микрофремворке slim я использую следующее решение — я верстаю форму не используя тег form. Ведь все равно обработчики я пишу свои на javascript и мне не нужно чтобы форма была классической. И это помогает на самом деле, такие формы остаются незамеченные спам ботами.
Но такой подход или нельзя или довольно проблематично использоваться с ajaxform и formit, ведь они нацелены на событие submit, которое возникает при отправке формы.
Поэтому и интересно, что применяют коллеги и как воюют со спамом?
Комментарии: 23
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
Очень простенький хук на самом деле — и сильно спасает.
Не везде это конечно нужно, но в региональных магазинчиках сойдет
Вот пример кода для хука FormIT
У меня как то на одном проекте была задача — скрыть сайт от жителей Кореи, но оставить доступным всему миру. Тоже для начала выбрал какой-то бесплатный сервис, но он работал так не стабильно, часто отдавал 500 ошибки, что в итоге купили дорогой пакет.
На больших магазинах не тестил, но на средних работает хорошо. Во всяком случае, до установки этой ловушки спам падал по 20-50 писем в сутки, а после — как отрезало.
Есть минус у этого способа — не отправить форму через ctrl+enter.
Интересная идея.
Хватает утилит, которые обойдут эту проверку, т.к. содержат скрытое окно хрома и там «елозят» мышкой. Но от простых атак — да пройдет. Даже капчу можно за копейки в автоматическом режиме разбирать.
От «не простых» помогало только псевдослучайная смена разметки формы, смена классов в псевдослучайном порядке, смена текста и т.п.
С reCAPTCHA не имел дело, может это решение для небольших проектов лучшее.
Я борюсь таким образом:
1. Проверяю в сниппете для FormIt с помощи регулярки на наличие ссылки типа site.com И email типа name@mail.com в поле текстового сообщения + в каждом поле такую проверку делаю (Имя, Телефон, Название фирмы, все поля чекаю). Если обнаружена ссылка, то возвращаю false и сообщение, что «Ссылки или электронные адреса в данном поле не разрешены. Вы можете приложить Word, Excel, PDF или текстовый файл с подробным описанием, ссылками и email.».
2. Использую сниппет csrfhelper:
А в вызов FormIt добавляю хук csrfhelper_formit.
3. Разумеется, добавляю простейшую проверку на пустоту скрытое поле URL (можно назвать поле любым человекоподобным словом) 4. Добавляю таймер на страницу, который не разрешает отправлять форму, если ты менее 15 секунд на странице (обычно спам-боты отправляют спам моментально после загрузки страницы, менее чем за 1-5 секунд) и показываю пользователю сообщение об ошибке «Слишком быстро нажата кнопка Отправить. Подождите, пожалуйста, 15 секунд и отправьте еще раз.»
В форме Fenom-тэг с текущим временем в формате UNIX. Сравниваем его в антиспам-сниппете.
5. На всякий случай вырезаю все html-тэги из всех полей :stripTags
6. В доработке хук, который чекает прилагаемый файл через форму: только pdf, word, excel, txt, zip, png, jpg; не больше 25 мегабайт (вроде как стандартное ограничение всеми почтовиками). Если проверка не пройдена, то показываем вежливое сообщение, что мы принимаем только такие файлы и не больше 25 мб.
7. Не забываем про проверку на обязательность заполнения полей со стороны клиента с помощью тэга required. А также проставляем все необходимы типы данных в инпутах: type=«email», type=«number» или же type=«text» во всех полях!
Мое мнение — самое главное вернуть очень понятный человеку и вежливый ответ, что здесь ссылки не разрешены в целях борьбы со спамом, Вы можете приложить файл со всеми ссылками и адресами.
Сам сниппет antiSpam:
В самой форме плейсхолдеры для вывода человекопонятных ошибок:
До этого у меня была всего-лишь одна проверка regExp на наличие ссылки и email в поле Сообщения (message). Спама почти не было, но стал приходить спам типа Buy our viagra on usa-pharma.shop, пропускались такие ссылки. Более длинная регулярка уже иногда блочила любой текст, если юзер пишет сообщение и после точки сразу пишет слово нового предложения.
Добавил проверку на 15 секундное ожидание (человеку просто не реально раньше 15й секунды заполнить все поля и отправить форму). Можно поставить 5 секунд.
После этого стали приходить сообщение только от человеков, никакого спама.
Не отловленные ошибки надо бы логгировать (у меня был этот кусок кода для логгирования не отправленных форм через FormIt, но не могу найти, он в старых хуках был).
Ну и можно по IP блочить вдобавок, как выше уже предложено.
Я не очень силен в PHP, как смог так и написал, поэтому большая просьба помочь хорошо доработать данный сниппет/хук и поделиться им здесь.
Мы все учимся на чужом. Я до сих пор подсматриваю какие то технические решения в чужом коде. И использую удачные решения. Плюсь правда все чаще с каждым годом, но это уже другая история.
Но все же в 30 процентах случаев мы делаем заказчику новый сайт. И тогда я уже стараюсь хоть примерно (как правило заказчик сам понятия не имеет что ему нужно да и сео специалисты тоже) пытаюсь провести анализ и выбрать инструмент. Если это что то очень простое и на всю разработку дается 4-5 дней, то делаю на modx или opencart. Если позволяет время и я вижу, что проект по моим меркам средний или выше среднего по сложности — выбираю slim.
Наверное есть и вторая причина, почему выбираю не modx. Я не умею делать на нем красивые админки. Когда в админке работают наши контент менеджеры, то они привыкли к админке modx. Но если в админке будет работать заказчик — они все поголовно жалуются, что сложно, ничего не понятно, какие-то ресурсы…
А slim позволяет разработать свою админку, лаконичную и понятную.
Почему именно slim — наверное люблю минимализм. Смотрел в сторону laravel и понял что он мне не приятен именно тем, что в нем многое уже реализовано. Разговаривал с одним своим коллегой, просил его рассказать что такое storage в laravel, потому что сам не очень понял. Он сказал — а зачем ты пытаешься понять, вот же в документации написано — пишешь вот это, вызываешь такой то метод и все. Я так не люблю, мне такой подход не нравится.
Как раз в данную минуту разрабатываю личный кабинет для клиентов компании воздушного такси.
Ну и в моем мировозрении это несколько странно. Систему нужно либо принимать как она есть или не принимать совсем.
Хотя несколько раз я делал нечто подобное, если клиенты уж совсем психовали — делал отдельные страницы для управления некоторыми данными, которые не были связаны с админкой и «закрыты» теми или иными способами. Но это скорее исключение из правил.
Плюс мне «удобно думать» в концепции MVC, а в MODX она очень искажена на мой взгляд.
Как то вот комфортно мне в той микросреде, которую я вокруг slim себе создаю — slim, composer, orm doctrine, twig, php-di, классический mvc, поддержка стандартов psr-7, middleware и psr-15, стараюсь использовать чистый js и parcel (кстати отличная альтернатива излишне замороченному webpack)
И в formit его проверяю как обязательное, автоспама вроде нету и только ручной попадается иногда
Если данный инпут вставляется на событие загрузки страницы, то она произойдет и у «бота».
В 2022 году спам боты это очень совершенные программы, умеющие имитировать поведение пользователя на высоком уровне.
Но раз помогает, то наверное я в чем то не прав.
Но такой метод рассылки дороже обходиться спамерам, я так понял им пользуются уже те, у кого есть время и деньги и кто нацелен уже конкретно на какой-то сайт или сеть сайтов. Проспамить какую-то слитую где-то общую базу в миллион сайтов этим методом очень долго.
А дешевые методы спама не используют эмуляцию браузера, но могут обработать кучу сайтов.