Защита от спама в MODX

Как я понял, ставить защиту от спама в minishop2 — работа себе во вред, только потенциальных клиентов отпугнёшь. ОК.

А что насчёт обычных форм?
В интернете полно примеров (в связке с FormIt), когда формы отлично работают, и письмо отсылается, и в базу записывается… но только до того момента, когда пытаешься поставить что-то получше скрытого (hidden) поля.

И начинается…
То письмо не уходит, то в базу не записывается. Я уже почти сдался, честно.

Особенно это касается reCAPTCHA v3 от Гугла…
Вроде бы и ключи получил, и специальный плагин (reCaptchaV3) поставил, но даже пример с плагином просто не работает (форма с ответом не записывается в базу).

Не кажется ли вам, что reCAPTCHA 3 версии… глючит, что ли?
Может есть альтернатива всему этому (вариант без защиты не предлагать — проходил, знаю)?
Игорь
04 марта 2020, 09:36
modx.pro
1 823
0

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

Наумов Алексей
04 марта 2020, 11:08
0
Может именно reCAPTCHA 3 не проходит?
Смените на 2ю версию, где явно галочку нужно ставить.
    Максим
    04 марта 2020, 12:41
    0
    Никогда не пользуюсь капчей. Всегда обхожусь скрытым полем и хуком с соответствующими проверками. Можно в стилях прописать для определенных форм что-то типа того: .form input[name=«email»] {display:none;} Тогда поле с name email будет скрыто, а для пользовательского ввода использовать, например userEmail.
    Ну а в хуке проверять на заполненность поля с name email + если отправка аяксом, то проверить на аякс, ну и можно еще кнопке отправить дать нейм, например mysubmit и в хуке проверять, есть ли в суперглобальном массиве соответствующий ключь mysubmit.
    Почитать про хуки можно тут
    Ну и проверка на ajax. Вариант предложенный Василием ни разу еще не подвел.
      Yurij Finiv
      04 марта 2020, 16:06
      0
      Подозреваю что упустили что-то.
        vectorserver
        05 марта 2020, 09:16
        0
        Если использовать ajax, чекаю так:
        if (isset($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) === 'xmlhttprequest')
        {
          //CODE HERE
        }
          Алексей Шумаев
          05 марта 2020, 10:00
          0
          По моему опыту ни скрытые поля ни проверка ajax сейчас не спасут. Как только сайт как-то проявляется в выдаче, вырастет посещаемость, — рано или поздно спам придёт. Я так понимаю, что настройка спам-бота на форму (если автоматом не схватил) — это пара кликов. Использую токены.
            Игорь
            05 марта 2020, 10:21
            0
            Использую токены.
            Можно поподробнее?
              Алексей Шумаев
              05 марта 2020, 10:46
              0
              Реализовал в mvtForms2, вроде нормально.
              О FormIt ничего сказать не могу, не пользовался.
              Если говорить применительно к обычным формам (со своим контроллером), то можно упрощённо сделать примерно так:
              1. генерим сниппетом токен (каждый раз новый) и выводим в скрытое поле формы + в пишем сессию
              2. перед отправкой формы проверяем токен, пришедший с формой с сохранённым в сессии
              Для токенов можно использовать шифрование с открытым ключом, особенно если форм много. Можно контролировать время актуальности токена, по вкусу.
              От прямого запроса на контроллер защищает проверка на ajax, от автоотправки формы со страницы сайта — проверка токена.
                Игорь
                05 марта 2020, 11:40
                0
                Отправил письмо на modstore
              Yurij Finiv
              05 марта 2020, 17:11
              0
              Спасает google каптча, и пустое поле и crsfHelper тогда в спам попадает очень мало писем.
            Беляев Роман
            30 октября 2020, 16:43
            0
            Капча не самый лучший вариант, и даже версия 3, инвизибл, которая иконку ставит, очень напрягает, особенно на телефонах.
            Нашел решение, и реализовал, первая часть, запрет на оформление пустых заказов, уже есть у меня на САЙТЕ

            вторую часть тоже реализовал, запрет оформления более 3 заказов если в базе уже есть со статусом новый в связке имя, почта.
              Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
              13