Помогите бороться со спамом

Помогите побороть спам который валится из форм…

нужно решение без капчи
валидацию по введенным данным формы проходят
пробовал скрытые поля ставить не помогает

Такие у меня формы:
[[!AjaxForm?
	&snippet=`FormIt`
	&form=`order-call`
	&emailTpl=`callEmailTpl`
	&hooks=`email`
	&emailSubject=`Заказ звонка с сайта`
	&emailTo=`frogggggi@gmail.com`
	&validate=`work-email:blank,name:required,phone:required:regexp=^/[0-9]/^,workemail:blank`
	&validationErrorMessage=`<p class="error">Ваше сообщение не отправлено!
Заполните обязательные поля формы.</p>`
	&successMessage=`Сообщение успешно отправлено`
]]
workemail и work-email скрытые формы… не помогло… помогите
Саша Иващенко
07 февраля 2016, 17:31
modx.pro
6
5 486
0

Комментарии: 18

Евгений
07 февраля 2016, 21:11
0
Назови инпуты в форме аброкадаброй, типа:
name->g3FLLq1840-8
email->prki548hwpr
ну и так далее. У меня работает.
    Саша Иващенко
    07 февраля 2016, 21:21
    0
    типа mane=«g3FLLq1840-8» и в ajaxform вместо name — g3FLLq1840-8?
      Владимир
      07 февраля 2016, 22:12
      0
      Просто используйте хук spam
      Соответственно, вам потребуется еще несколько обманных инпутов (их вы скроете присвоив соответствующий класс CSS со свойством display:none). Заполнение данных полей как раз и будет препятствовать отправке формы. И называйте их как угодно, но лучше используйте в названии email и т.п.
      Это самый надежный способ.
        Владимир
        08 февраля 2016, 00:50
        0
        workemail и work-email скрытые формы… не помогло…
        они не будут работать без хука spam!
        &hooks=`email,spam `
          Саша Иващенко
          08 февраля 2016, 13:22
          0
          Вот форма и только пришел спам 13 писем с нее
          инпут у меня текстовый и через класс fields скрыт display:none;

          вот вызов:
          [[!AjaxForm? 
          	&snippet=`FormIt` 
          	&hooks=`email,spam` 
          	&successMessage=`Сообщение успешно отправлено` 
          	&form=`mainForm` 
          	&emailTpl=`mainEmailTpl` 
          	&emailSubject=`Заявка с главной страницы сайта` 
          	&emailTo=`n.metelitsa@ekodomostroy.ru,v.frolov@ekodomostroy.ru,t.snegur@ekodomostroy.ru,frogggggi@gmail.com` 
          	&submitVar=`mainForm`
          	&frontend_css=`[[+assetsUrl]]css/custom.css` 
          	&validate=`workemail:blank,name:required,mail:email:required,phone:required:regexp=^/[0-9]/^`
          ]]
          вот форма моя mainForm
          <form action="[[~[[*id]]]]" method="post" id="main-order" class="order-on-main general clearLabel">
          	<div class="top-block-order">
          		<div class="title_no_h3">Заполните заявку<small>Мы бесплатно рассчитаем смету</small></div>
          	</div>
          	<input type="text" id="workemail" name="workemail" value="" class="fields" />
          	<input type="hidden" name="when" id="when" value="[[+date`]]" class="when">
          	<p><input type="text" placeholder="Имя" class="fio" name="name" value="[[!+fi.name]]" required /></p>
          	<p><input type="text" placeholder="Email" class="mail" name="mail" value="[[!+fi.mail]]" required /></p>
          	<p><input type="text" placeholder="Телефон" class="phone" name="phone" value="[[!+fi.phone]]"/></p>
          	<p><textarea name="message" class="message" placeholder="Комментарии" required>[[[[!+fi.message]]]]</textarea></p>
              
          	<div class="bottom-block-order">
          	<input type="submit" value="Отправить" class="yellow-btn" id="mainForm" name="mainForm"/>
          	</div>
          </form>
            Сергей Шлоков
            08 февраля 2016, 13:40
            0
            Сначала нужно спам проверить, а потом уже почту отправлять
            &hooks=`spam,email`
            А зачем в ajax форме такое?
            value="[[!+fi.name]]"
              Саша Иващенко
              08 февраля 2016, 14:00
              0
              Сначала нужно спам проверить, а потом уже почту отправлять
              &hooks=`spam,email`
              Аааааааа

              А разве не нужно? я все с formit переделывал…
                Сергей Шлоков
                08 февраля 2016, 14:11
                0
                А разве не нужно? я все с formit переделывал…
                Форма же ajax. Страница не перегружается, поэтому данные не пропадают. А при первой загрузке эти плейсхолдеры пустые. Вывод: они не нужны.
    Михаил
    08 февраля 2016, 06:34
    0
      Роман Садоян
      08 февраля 2016, 10:54
      0
      Стоит рекапча, количество спама резко сократилось, чем до её установки, но всё же по 3-4 письма в день иногда проскакивают.
      Оставил капчу переименовал инпуты в белиберду — посмотрим к чему это приведет.
      Павел Романов
      08 февраля 2016, 09:34
      +2
      Есть еще нюанс.
      Если используете проверку на пустоту поля:
      &validate=`work-email:blank.....`
      то это поле в форме должно быть не type="hidden", а type="text" или type="email". Скрывайте же его средствами CSS.
      Просто боты нынче умные — они понимают, что поле «hidden» — скрытое и оставляют его пустым -> проверка проходится на раз-два )
        Алексей
        08 февраля 2016, 16:37
        3
        +2
        у меня никаких особых защит не стоит — ни капчи, ни текстовых вопросов.
        защита серверная.
        Все дело в спам-программах — они сначало пытаются понять, с каким движком имеют дело, а только потом уже заспамиться\зарегистрировать пользователя\оставить ссылку, делают они это по следующим признакам:
        1. наличие footprint'а в файле html
        Powered by wordpress
        Powered by joomla
        Этот пункт не относится к MODX — пропускаем
        2. ломятся по известным адресам (папкам)
        /bitrix/
        /user/
        /users/
        /registrate/
        /login/
        И так далее — тут они понимают, битрикс ли это или форум phpbb, или что там еще.
        Вот этот пункт интересен.
        В nginx вешаем правило
        location ~* ^/(blocks|bitrix|user|users|registrate|login|node|netcat|wp-admin|wp-content|wordpress|engine|blocks|administrator|PMA|phpmyadmin|myadmin|mysql|mysqladmin|sqladmin|mypma|admin|xampp|mysqldb|mydb|db|pmadb|phpmyadmin1|phpmyadmin2)(|/) {
        	try_files $uri =404;
        }
        — исключительно чтобы не нагружать php5-fpm\hhvm демон спамными запросами, динамический бэкэнд и там отдаст 404 ошибку т.к. этих папок нет.
        Потом ставим fail2ban, и организуем следующий jail:
        /etc/fail2ban/filter.d/nginx-noscript.conf
        [INCLUDES]
        before = common.conf
        
        [Definition]
        failregex = 	
        		^[^ ]* <HOST> -.*"GET.*(\.php|\.asp|\.exe|\.pl|\.cgi|\.scgi).*" 404
        		^[^ ]* <HOST> -.*"GET.*/(blocks|bitrix|user|users|registrate|login|node|netcat|wp-admin|wp-content|wordpress|engine|blocks|administrator|PMA|phpmyadmin|myadmin|mysql|mysqladmin|sqladmin|mypma|admin|xampp|mysqldb|mydb|db|pmadb|phpmyadmin1|phpmyadmin2).*" 404
        		^[^ ]* <HOST> -.*"GET.*" 403
        		^[^ ]* <HOST> -.*"GET.*" 401
        		^[^ ]* <HOST> -.*"GET.*" 444
        ignoreregex =
        и в файле:
        /etc/fail2ban/filter.d/jail.conf
        [nginx-noscript]
        enabled = true
        port = http,https
        #action = iptables-multiport[name=NoScript, port="http,https"]
        filter = nginx-noscript 
        logpath = /var/log/nginx*/*access*.log
        maxretry = 3
        bantime = 600
        Таким образом, любой, кто запросит подобные расположения папок: example.com/bitrix более 3 раз (maxretry = 3), попадет в бан по IP адресу на 10 минут (bantime = 600)
        При такой защите не только у спам-программ отпадает охота сканить ваш сайт, но и у тех, кто делает это вручную.
        +Абсолютная неуязвимость к программам определяющих на какой CMS ваш сайт
        +Практически никакого спама (только если форма отправки сообщений висиь на главной страничке)
        +Разгрузка динамического бэкэнда php5-fpm\hhvm от ненужных запросов

        Все эти интересные пути запрашиваются тысячами, обнаружить их можно анализируя логи через удобный интерфейс piwik, который называется log analizator, серверный скрипт, написанный на питоне. Смотрит все логи nginx и строит по ним всякие графики, пободно yandex.metrika, только по логам а не через прикрепляемый javascript (хотя такая возможность тоже есть). Тут же можно следить, как часто робот яндекса\гугла посещает ваш сайт.
          R2m0x94 (Vasily)
          21 марта 2019, 17:40
          0
          Отвечаю на часто спрашивают о Bitrix и MODX Revolution задаваемый вопрос:
          Что лучше bitrix или modx?
          Ну конечно, ну конечно же MODX Revo!
            R2m0x94 (Vasily)
            21 марта 2019, 17:42
            0
            1. Ограничение кол-во символов
            2. Ограничение на ввод ссылок
            3. Проверка на IP в AjaxForm &CustomValidators
            Этого вполне достаточно, чтобы быть уверенным в завтрашнем дне.
              Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
              18