Спам через formit
        Всем привет, не как не могу разгадать загадку, не понимаю как через форму связи приходит спам.
Стоит хук math
Вчера еще добавил поле для ввода mail с валидацией.
В итоге это все не помогает и приходит по 5 писем.
Приходит такая дрянь screenshot.su/show.php?img=b45d655023c0ae58c2f0a1883c48f64c.jpg
Код формы
     
    
    
                                                                                
            Стоит хук math
Вчера еще добавил поле для ввода mail с валидацией.
В итоге это все не помогает и приходит по 5 писем.
Приходит такая дрянь screenshot.su/show.php?img=b45d655023c0ae58c2f0a1883c48f64c.jpg
<form>
<div class="form-group">
    <label class="sr-only" for="af_name"></label>
    <div class="input-group">
      <div class="input-group-addon"><i class="fa fa-user"></i></div>
      <input type="text" class="form-control" id="af_name" name="name" value="[[+fi.name]]" placeholder="Как вас зовут?">
    </div>
	  <span class="error_name">[[+fi.error.name]]</span>
  </div>
  <div class="form-group">
    <label class="sr-only" for="af_phone"></label>
    <div class="input-group">
      <div class="input-group-addon"><i class="fa fa-phone"></i></div>
      <input type="text" class="form-control" id="af_phone" name="phone" value="[[+fi.phone]]" placeholder="Номер телефона">
    </div>
	<span class="error_phone">[[+fi.error.phone]]</span>
  </div>
  
    <div class="form-group">
    <label class="sr-only" for="af_mail"></label>
    <div class="input-group">
      <div class="input-group-addon"><i class="fa fa-envelope" aria-hidden="true"></i></div>
      <input type="text" class="form-control" id="af_mail" name="mail" value="[[+fi.mail]]" placeholder="Контактный Email">
    </div>
	<span class="error_mail">[[+fi.error.mail]]</span>
  </div>
  
  <div class="form-group">
    <label class="sr-only" for="af_content"></label>
    <div class="input-group">
      <div class="input-group-addon"><i class="fa fa-font"></i></div>
          <textarea class="form-control" id="af_content" name="content" value="[[+fi.content]]" rows="3" placeholder="Сообщение"></textarea>
    </div>
    <span class="error_content">[[+fi.error.content]]</span>
  </div>
  
  <div class="modal-footer-button">
        <button type="submit" class="btn btn-success">Отправить</button>
  </div>
  	[[+fi.success:is=`1`:then=`
		<div class="alert alert-success">[[+fi.successMessage]]</div>
	`]]
	[[+fi.validation_error:is=`1`:then=`
		<div class="alert alert-danger">[[+fi.validation_error_message]]</div>
	`]]
</form>[[!AjaxForm?
	&snippet=`FormIt`
	&form=`mail_form_call`
	&emailTpl=`email_tpl`
	&hooks=`email`
	&emailSubject=`Письмо с сайта [[++site_url]]`
	&emailTo=`info@xxxxxx.ru`
	&validate=`name:required,phone:required,content:required,mail:email:required`
	&validationErrorMessage=`В форме содержатся ошибки!`
	&successMessage=`Сообщение успешно отправлено`
]]Комментарии: 26
                При валидации почты, так-же приходит спам, только уже с почтой. Не ужели никто не сталкивался и не решал такую проблему?            
                    
                А ты попробуй создать поле «user» сделать его невидимым с помощью css, затем проверять — если оно заполнено, то не принимать письмо. В разы будет меньше спама.            
                    
                Уже так и думал сделать, но тут меня удивляет то, что приходят сразу писем по 7, т.е. и хук math не спасает(            
                    
                Прикол в том что hidden поля роботы не заполняют, соответственно такой трюк не пройдет. Я делал по-другому. Поля оставлял видимым, но с посредством стилей сдвигал его за пределы блока, чтобы обычному пользователю его видно не было и он его не заполнял, а робот заполняет это поле — и не проходит валидацию.            
                    
                да я так и вроде написал
                    невидимым с помощью cssможно использовать text-indent, visibility:hidden, display:none, и т.д.
                Спасибо всем за советы, я сейчас сделал так, поле которые было и заполнялось спам роботом оставил и скрыл в css. Создал новое поле для текста. Для того поля добавил content:blank. Все верно?            
                    
                если помогло, спама нет, и можно отправлять сообщения — то все верно -)
можно наделать таких «виртуальных» полей (скрытых через css) несколько, к примеру:
user, city, country — и заполнять их на автомате перед отправкой формы через javascript. Затем проверять на совпадение на серверной части. У ботов почти всегда отключен javascript — слишком для них это затратно (по ресурсам — на каждый сайт включать java-машину). Также, если у тебя сайт не супер-популярный, никто не будет заморачиватся писать бота специально для обхода таких нехитрых анти-спам мер.
Я считаю, каптча — это очень крайний способ защиты от спама, когда на простые методы защиты, спамеры тут же адаптируют своих ботов. Но вот в моей практике такого не случалось.
                    можно наделать таких «виртуальных» полей (скрытых через css) несколько, к примеру:
user, city, country — и заполнять их на автомате перед отправкой формы через javascript. Затем проверять на совпадение на серверной части. У ботов почти всегда отключен javascript — слишком для них это затратно (по ресурсам — на каждый сайт включать java-машину). Также, если у тебя сайт не супер-популярный, никто не будет заморачиватся писать бота специально для обхода таких нехитрых анти-спам мер.
Я считаю, каптча — это очень крайний способ защиты от спама, когда на простые методы защиты, спамеры тут же адаптируют своих ботов. Но вот в моей практике такого не случалось.
                Фактически хук math, это что то вроде капчи, возможно это и есть оно. Но почему не помогает, не понятно.            
                    
                вроде как спамеры давным давно научились считать текстовые капчи. Тут нужно проявить фантазию, и к примеру задавать такие формулы: 5 + x = 7, а на месте X — ставить input с возможностью ввода ответа. На все это заморачиваться не стоит — если простое скрытие «ловушечных» input'ов через css работает.            
                    
                Ну не совсем, роботы считывают стили и если стоит 
                    visibility:hidden, display:none, и т.д.то не заполняют их, и трюк не проходит.
                На данный момент, полет нормальный, нет спама, подожду еще 1-2 недели и оставлю свой вердикт, может кому будет полезна наша дискуссия.
Но пока вариант такой:
1) Валидация по email — не спасает
2) хук spam — не спасает
3) хук math — не спасает (и вообще странно, мне кажется его как то обходят и не заполняют, не думаю что в ручную вбивают)
Единственное, что помогло — скрытое поле стилями.
И вопрос, может кто знает как сделать ограничение в отправке формы по времени, например 1 письмо в 20 сек.
                    Но пока вариант такой:
1) Валидация по email — не спасает
2) хук spam — не спасает
3) хук math — не спасает (и вообще странно, мне кажется его как то обходят и не заполняют, не думаю что в ручную вбивают)
Единственное, что помогло — скрытое поле стилями.
И вопрос, может кто знает как сделать ограничение в отправке формы по времени, например 1 письмо в 20 сек.
                окей, тогда вот такой рецептик modx.pro/help/7830/#comment-54990
хотя я не видел таких ботов, которые занимаются распарсиванием стилей. Тут 1- нужно чтобы бот был «всеядный» — мог отправлять формы любых типов, с любым количеством input'ов 2- мог анализировать какие поля и где заполнять, т.е. парсить стили. Что-то я не встречал такого. Только если вручную кто-то адаптирует какой-нибудь allsubmitter или xrumer под ваш сайт. Но сайт должен для спамера представлять особый интерес в таком случае. Вот тут уже в дело должна пойти каптча.
                    хотя я не видел таких ботов, которые занимаются распарсиванием стилей. Тут 1- нужно чтобы бот был «всеядный» — мог отправлять формы любых типов, с любым количеством input'ов 2- мог анализировать какие поля и где заполнять, т.е. парсить стили. Что-то я не встречал такого. Только если вручную кто-то адаптирует какой-нибудь allsubmitter или xrumer под ваш сайт. Но сайт должен для спамера представлять особый интерес в таком случае. Вот тут уже в дело должна пойти каптча.
                До недавнего времени мне помогало такое решение, но сейчас роботы поумнели
Пришлось добавить кнопку «Я не робот», которая в div подгружает кнопку отправить.
Причем, эта кнопка находится вне тегов {form} {/form}
Капчу совсем не хотелось ставить
                    &hooks=`spam,email`
&validate=`additionalemail:blank`<input type="hidden" name="additionalemail" value="" />
<input type="hidden" name="nospam:blank" value="" />Пришлось добавить кнопку «Я не робот», которая в div подгружает кнопку отправить.
Причем, эта кнопка находится вне тегов {form} {/form}
<script>
$(document).ready(function() {
$(".norobot").click(function() {
$(".norobotarea").html('<button type="submit" class="button transition-03 smooth">Отправить</button>');
});
});
</script>Капчу совсем не хотелось ставить
                Сейчас попробую за счет скрытого поля решить, если не поможет, буду пробовать ваш вариант, спасибо.            
                    
                math помогает от спама! но у FormIt 2.2.8 странная особенность хук math должен стоять первым:
                    [[!FormIt?
    &hooks=`math,email,spam,FormItAutoResponder,FormItSaveForm,redirect`
    &emailTpl=`tpl.FeedBackMe`
    &emailSubject=`Новое сообщение с формы обратной связи`
    &emailTo=`mail@mail.mail`
    &emailFromName=`[[++site_name]]`
    &emailFrom=`noreply@mail.ru`
    
    &validate=`workemail:blank,math:required`
    
    &fiarTpl=`tpl.FeedBackClient`
    &fiarSubject=`Новое сообщение с формы обратной связи`
    &fiarToField=`email`
    &fiarFromName=`[[++site_name]]`
    &fiarFrom=`noreply@mail.ru`
    &fiarReplyTo=`noreply@mail.ru`
    
    &redirectTo=`28`
]]Далее в форме плейсхолдеры:<tr>
                <td>Код безопасности <font color="red">*</font> [[!+fi.op1]] [[!+fi.operator]] [[!+fi.op2]]:</td>
                <td>
                    <input type="text" name="math:required" size="6" maxlength="5" style="text-align:center;" value="[[!+fi.math]]">
                    [[!+fi.error.math]]
                    <input type="hidden" name="op1" value="[[!+fi.op1]]" />
                    <input type="hidden" name="op2" value="[[!+fi.op2]]" />
                    <input type="hidden" name="operator" value="[[!+fi.operator]]" />
                </td>
            </tr>
            <tr><td colspan="2" align="center">
<input type="submit" value="Отправить сообщение"></td></tr>            
                Спасибо за ответ, но посмотрел ваш вариант и мой, у меня сейчас фактически так-же все и не помогает:
                    <form>
<div class="form-group">
    <label class="sr-only" for="af_name"></label>
    <div class="input-group">
      <div class="input-group-addon"><i class="fa fa-user"></i></div>
      <input type="text" class="form-control" id="af_name" name="name" value="[[+fi.name]]" placeholder="Как вас зовут?">
    </div>
	  <span class="error_name">[[+fi.error.name]]</span>
  </div>
  <div class="form-group">
    <label class="sr-only" for="af_phone"></label>
    <div class="input-group">
      <div class="input-group-addon"><i class="fa fa-phone"></i></div>
      <input type="text" class="form-control" id="af_phone" name="phone" value="[[+fi.phone]]" placeholder="Номер телефона">
    </div>
	<span class="error_phone">[[+fi.error.phone]]</span>
  </div>
  
    <div class="form-group">
    <label class="sr-only" for="af_mail"></label>
    <div class="input-group">
      <div class="input-group-addon"><i class="fa fa-envelope" aria-hidden="true"></i></div>
      <input type="text" class="form-control" id="af_mail" name="mail" value="[[+fi.mail]]" placeholder="Контактный Email">
    </div>
	<span class="error_mail">[[+fi.error.mail]]</span>
  </div>
  
  <div class="form-group">
    <label class="sr-only" for="af_content"></label>
    <div class="input-group">
      <div class="input-group-addon"><i class="fa fa-font"></i></div>
          <textarea class="form-control" id="af_content" name="content" value="[[+fi.content]]" rows="3" placeholder="Сообщение"></textarea>
    </div>
    <span class="error_content">[[+fi.error.content]]</span>
  </div>
  <div class="form-group">
    <label class="sr-only" for="af_math"></label>
    <div class="input-group">
      <div class="input-group-addon"><i class="fa fa-exclamation-triangle" aria-hidden="true"></i></div>
      <!--label>[[!+fi.op1]] [[!+fi.operator]] [[!+fi.op2]]</label-->
<input class="form-control" type="text" name="math" value="[[!+fi.math]]" placeholder="Сколько будет? [[!+fi.op1]] [[!+fi.operator]] [[!+fi.op2]] = *" />
<input type="hidden" name="op1" value="[[!+fi.op1]]" />
<input type="hidden" name="op2" value="[[!+fi.op2]]" />
<input type="hidden" name="operator" value="[[!+fi.operator]]" />
          <!--textarea class="form-control" id="af_content" name="content" value="[[+fi.content]]" rows="3" placeholder="Сообщение"></textarea-->
    </div>
    <span class="error_math">[[+fi.error.content]]</span>
  </div>
  
  <div class="modal-footer-button">
        <button type="submit" class="btn btn-success">Отправить</button>
  </div>
  	[[+fi.success:is=`1`:then=`
		<div class="alert alert-success">[[+fi.successMessage]]</div>
	`]]
	[[+fi.validation_error:is=`1`:then=`
		<div class="alert alert-danger">[[+fi.validation_error_message]]</div>
	`]]
</form>И [[!AjaxForm?
	&snippet=`FormIt`
	&form=`mail_form_call`
	&emailTpl=`email_tpl`
	&hooks=`math,spam,email`
	&emailSubject=`Письмо с сайта [[++site_url]]`
	&emailTo=`info@site.ru`
	&validate=`math:required,name:required,phone:required,content:required,mail:email:required`
	&validationErrorMessage=`В форме содержатся ошибки!`
	&successMessage=`Сообщение успешно отправлено`
	&mathMinRange=`1`
    &mathMaxRange=`10`
]]Может где то ошибка, но спама сыпется очень много.            
                Подвожу итог, самый надежный способ, который помог мне, это сделать новое поле для ввода текстовой информации и скрытие старого с помощью css. Соответственно добавил на старое поле условие, что не должно быть заполнено. Всем спасибо за помощь!            
                    
                Вроде reCAPTCHA modx.pro/components/4902-new-google-recaptchav2-for-formit/ тоже сейчас достойный ответ спаму.
Ставил в очередной раз вчера. Хлопот ноль. Только получить коды тут
                    Ставил в очередной раз вчера. Хлопот ноль. Только получить коды тут
                Возможно это хорошее решение, но когда вы сделаете формы для 50-10 сайтов, достаточно сложно ее ставить, если я не ошибаюсь там надо ключи получать как и на google капчу.            
                    достаточно сложно ее ставить— нет. Получение ключа и установка даже проще вашего решения. Я не приукрашиваю.
1. перешли поссылке
2. просто вписали домен и получили ключи
3. вписали ключи в настройки
4. добавили в форму два тега.
                у меня есть все один минус, который пока не исправил, может подскажите: есть форма на странице, ну например, услуги и форма в модальном окне обратного звонка или быстрой заявки
когда 2 формы на одной странице то капча загружается для одной из них, вроде которая выше друго по коду
                    когда 2 формы на одной странице то капча загружается для одной из них, вроде которая выше друго по коду
                Если не «трогать» сам reCAPTCHA, то 1. создайте отдельную страницу с пустым шаблоном, 2. вызовите на ней форму, потом 3. в модальном окне на нужной странице врежьте iframe с формой (страницей с пустым шаблоном).            
                    
                Недавно сам столкнулся со спамом через FormIt, сразу вспомнил этот тикет! )
Я создал скрытое поле со значением текущего timestamp, потом в прехуке проверял с текущим timestamp'ом при сабмите формы, если разница меньше чем 5 секунд, то посылал бота к чертям. Время можно увеличить и до 20 секунд вполне. Засеките сами время, за которое вы заполните все поля. Не думаю, что спам боты сидят на сайте долгое время, только если не написаны на PhantomJS.
Я вот так избавился!
                    Я создал скрытое поле со значением текущего timestamp, потом в прехуке проверял с текущим timestamp'ом при сабмите формы, если разница меньше чем 5 секунд, то посылал бота к чертям. Время можно увеличить и до 20 секунд вполне. Засеките сами время, за которое вы заполните все поля. Не думаю, что спам боты сидят на сайте долгое время, только если не написаны на PhantomJS.
Я вот так избавился!
                Код в студию!            
                    
                Я обычно делаю пустое поле text с распространенным именем, скрытое стилями. И проверяю пустое оно или нет. Боты его заполняют, так как для них это обычное поле, а пользователи не видят, поэтому незаполняют, если оно прилетело пустое, то заполнил его пользователь, если не пустое, то бот.            
                    
                Да не боты заполняют формы, а люди. Какую защите не ставь, спам валится с сайтов            
                    
                            Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.