Спам через 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 с распространенным именем, скрытое стилями. И проверяю пустое оно или нет. Боты его заполняют, так как для них это обычное поле, а пользователи не видят, поэтому незаполняют, если оно прилетело пустое, то заполнил его пользователь, если не пустое, то бот.
Да не боты заполняют формы, а люди. Какую защите не ставь, спам валится с сайтов
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.