Защита от спама в MODX
Как я понял, ставить защиту от спама в minishop2 — работа себе во вред, только потенциальных клиентов отпугнёшь. ОК.
А что насчёт обычных форм?
В интернете полно примеров (в связке с FormIt), когда формы отлично работают, и письмо отсылается, и в базу записывается… но только до того момента, когда пытаешься поставить что-то получше скрытого (hidden) поля.
И начинается…
То письмо не уходит, то в базу не записывается. Я уже почти сдался, честно.
Особенно это касается reCAPTCHA v3 от Гугла…
Вроде бы и ключи получил, и специальный плагин (reCaptchaV3) поставил, но даже пример с плагином просто не работает (форма с ответом не записывается в базу).
Не кажется ли вам, что reCAPTCHA 3 версии… глючит, что ли?
Может есть альтернатива всему этому (вариант без защиты не предлагать — проходил, знаю)?
А что насчёт обычных форм?
В интернете полно примеров (в связке с FormIt), когда формы отлично работают, и письмо отсылается, и в базу записывается… но только до того момента, когда пытаешься поставить что-то получше скрытого (hidden) поля.
И начинается…
То письмо не уходит, то в базу не записывается. Я уже почти сдался, честно.
Особенно это касается reCAPTCHA v3 от Гугла…
Вроде бы и ключи получил, и специальный плагин (reCaptchaV3) поставил, но даже пример с плагином просто не работает (форма с ответом не записывается в базу).
Не кажется ли вам, что reCAPTCHA 3 версии… глючит, что ли?
Может есть альтернатива всему этому (вариант без защиты не предлагать — проходил, знаю)?
Комментарии: 13
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
Смените на 2ю версию, где явно галочку нужно ставить.
Ну а в хуке проверять на заполненность поля с name email + если отправка аяксом, то проверить на аякс, ну и можно еще кнопке отправить дать нейм, например mysubmit и в хуке проверять, есть ли в суперглобальном массиве соответствующий ключь mysubmit.
Почитать про хуки можно тут
Ну и проверка на ajax. Вариант предложенный Василием ни разу еще не подвел.
О FormIt ничего сказать не могу, не пользовался.
Если говорить применительно к обычным формам (со своим контроллером), то можно упрощённо сделать примерно так:
1. генерим сниппетом токен (каждый раз новый) и выводим в скрытое поле формы + в пишем сессию
2. перед отправкой формы проверяем токен, пришедший с формой с сохранённым в сессии
Для токенов можно использовать шифрование с открытым ключом, особенно если форм много. Можно контролировать время актуальности токена, по вкусу.
От прямого запроса на контроллер защищает проверка на ajax, от автоотправки формы со страницы сайта — проверка токена.
crsfHelper — что это?
Нашел решение, и реализовал, первая часть, запрет на оформление пустых заказов, уже есть у меня на САЙТЕ
вторую часть тоже реализовал, запрет оформления более 3 заказов если в базе уже есть со статусом новый в связке имя, почта.