Защита от спама в MODX
Как я понял, ставить защиту от спама в minishop2 — работа себе во вред, только потенциальных клиентов отпугнёшь. ОК.
А что насчёт обычных форм?
В интернете полно примеров (в связке с FormIt), когда формы отлично работают, и письмо отсылается, и в базу записывается… но только до того момента, когда пытаешься поставить что-то получше скрытого (hidden) поля.
И начинается…
То письмо не уходит, то в базу не записывается. Я уже почти сдался, честно.
Особенно это касается reCAPTCHA v3 от Гугла…
Вроде бы и ключи получил, и специальный плагин (reCaptchaV3) поставил, но даже пример с плагином просто не работает (форма с ответом не записывается в базу).
Не кажется ли вам, что reCAPTCHA 3 версии… глючит, что ли?
Может есть альтернатива всему этому (вариант без защиты не предлагать — проходил, знаю)?
А что насчёт обычных форм?
В интернете полно примеров (в связке с FormIt), когда формы отлично работают, и письмо отсылается, и в базу записывается… но только до того момента, когда пытаешься поставить что-то получше скрытого (hidden) поля.
И начинается…
То письмо не уходит, то в базу не записывается. Я уже почти сдался, честно.
Особенно это касается reCAPTCHA v3 от Гугла…
Вроде бы и ключи получил, и специальный плагин (reCaptchaV3) поставил, но даже пример с плагином просто не работает (форма с ответом не записывается в базу).
Не кажется ли вам, что reCAPTCHA 3 версии… глючит, что ли?
Может есть альтернатива всему этому (вариант без защиты не предлагать — проходил, знаю)?
Комментарии: 13
Может именно reCAPTCHA 3 не проходит?
Смените на 2ю версию, где явно галочку нужно ставить.
Смените на 2ю версию, где явно галочку нужно ставить.
Никогда не пользуюсь капчей. Всегда обхожусь скрытым полем и хуком с соответствующими проверками. Можно в стилях прописать для определенных форм что-то типа того: .form input[name=«email»] {display:none;} Тогда поле с name email будет скрыто, а для пользовательского ввода использовать, например userEmail.
Ну а в хуке проверять на заполненность поля с name email + если отправка аяксом, то проверить на аякс, ну и можно еще кнопке отправить дать нейм, например mysubmit и в хуке проверять, есть ли в суперглобальном массиве соответствующий ключь mysubmit.
Почитать про хуки можно тут
Ну и проверка на ajax. Вариант предложенный Василием ни разу еще не подвел.
Ну а в хуке проверять на заполненность поля с name email + если отправка аяксом, то проверить на аякс, ну и можно еще кнопке отправить дать нейм, например mysubmit и в хуке проверять, есть ли в суперглобальном массиве соответствующий ключь mysubmit.
Почитать про хуки можно тут
Ну и проверка на ajax. Вариант предложенный Василием ни разу еще не подвел.
Подозреваю что упустили что-то.
Если использовать ajax, чекаю так:
if (isset($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) === 'xmlhttprequest')
{
//CODE HERE
}
По моему опыту ни скрытые поля ни проверка ajax сейчас не спасут. Как только сайт как-то проявляется в выдаче, вырастет посещаемость, — рано или поздно спам придёт. Я так понимаю, что настройка спам-бота на форму (если автоматом не схватил) — это пара кликов. Использую токены.
Использую токены.
Можно поподробнее?
Реализовал в mvtForms2, вроде нормально.
О FormIt ничего сказать не могу, не пользовался.
Если говорить применительно к обычным формам (со своим контроллером), то можно упрощённо сделать примерно так:
1. генерим сниппетом токен (каждый раз новый) и выводим в скрытое поле формы + в пишем сессию
2. перед отправкой формы проверяем токен, пришедший с формой с сохранённым в сессии
Для токенов можно использовать шифрование с открытым ключом, особенно если форм много. Можно контролировать время актуальности токена, по вкусу.
От прямого запроса на контроллер защищает проверка на ajax, от автоотправки формы со страницы сайта — проверка токена.
О FormIt ничего сказать не могу, не пользовался.
Если говорить применительно к обычным формам (со своим контроллером), то можно упрощённо сделать примерно так:
1. генерим сниппетом токен (каждый раз новый) и выводим в скрытое поле формы + в пишем сессию
2. перед отправкой формы проверяем токен, пришедший с формой с сохранённым в сессии
Для токенов можно использовать шифрование с открытым ключом, особенно если форм много. Можно контролировать время актуальности токена, по вкусу.
От прямого запроса на контроллер защищает проверка на ajax, от автоотправки формы со страницы сайта — проверка токена.
Отправил письмо на modstore
Спасает google каптча, и пустое поле и crsfHelper тогда в спам попадает очень мало писем.
Капча — это да, просто тут она не рассматривается. Хотя у неё же вроде есть пассивный режим?
crsfHelper — что это?
crsfHelper — что это?
Вот так и знал, что что-то же готовое в этом плане должно быть )
Капча не самый лучший вариант, и даже версия 3, инвизибл, которая иконку ставит, очень напрягает, особенно на телефонах.
Нашел решение, и реализовал, первая часть, запрет на оформление пустых заказов, уже есть у меня на САЙТЕ
вторую часть тоже реализовал, запрет оформления более 3 заказов если в базе уже есть со статусом новый в связке имя, почта.
Нашел решение, и реализовал, первая часть, запрет на оформление пустых заказов, уже есть у меня на САЙТЕ
вторую часть тоже реализовал, запрет оформления более 3 заказов если в базе уже есть со статусом новый в связке имя, почта.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.