Рейтинг:0

Как я могу остановить спам веб-форм?

флаг ae

Мы получаем спам из простой веб-формы «Свяжитесь с нами». Мы используем Drupal 7, используя модули Captcha и Honeypot. Задача Captcha настроена на изображение, а ограничение времени Honeypot установлено на 4 секунды и включено для всех веб-форм. Но в последнее время нас стали спамить со скоростью 4-5 постов в минуту, все с разных gmail или ru адресов. На данный момент мы отменили публикацию оскорбительной веб-формы. У кого-нибудь есть совет, что еще мы могли бы попробовать?

Рейтинг:2
флаг ph

Вот что можно попробовать

  • Установите имя элемента приманки на что-то другое
  • Установите ограничения на отправку по IP-адресу в веб-форме
  • Установите ограничения на отправку с помощью файла cookie в веб-форме
  • Пытаться reCaptcha v3, если вы все еще используете старую капчу

Недостатком ограничений на отправку является то, что люди на общих компьютерах/сетях могут быть заблокированы, и если вы используете файл cookie, вам придется иметь дело с законодательством о файлах cookie.

Недостатком ReCaptcha является то, что вы позволяете Google решать, кто является спамером. Может не быть недостатком в зависимости от вашего взгляда на Google.

No Sssweat avatar
флаг ua
Попробуйте `reCaptcha v3` из моего опыта, это не работает. Я нашел v2 более эффективным (
sonfd avatar
флаг in
Еще одна вещь, которую я использовал с некоторым успехом, — это [модуль Antibot] (https://www.drupal.org/project/antibot). Хотя для этого требуется включенный javascript.
berramou avatar
флаг gb
этот модуль тоже полезен https://www.drupal.org/project/webform_spam_words
Рейтинг:1
флаг in

Я использую бэкенд https://www.stopforumspam.com/ вместе с honeypot очень успешно. Но вы должны проверить, соответствуют ли показатели SFS вашему профилю риска пользователя.

Не уверен, есть ли модуль, но вот мой код, если вы хотите скопировать вставку и поиграть с ним...

  /**
   * @param $ip - ip или ip[]
   * @param $name - имя или имя[]
   * @param $email - mailadr или mailadr[]
   *
   * @return float|int — средняя достоверность спама на сайте api.stopforumspam.org.
   */
  общедоступная статическая функция checkStopForumSpam($ip, $name, $email) {
    $client = Drupal::getContainer()->get('http_client');
    $endpoint = 'https://api.stopforumspam.org/api';
    $ имена = $ почты = [];
    если (is_array($имя)) {
      foreach ($name as $n) $names[] = urlencode($n);
    } еще {
      $names[] = urlencode($name);
    }
    если (is_array($email)) {
      foreach ($email как $n) $mails[] = md5($n);
    } еще {
      $mails[] = md5($email);
    }
    $постданные = [
      'form_params' => [
        'имя пользователя' => $имя,
        'emailhash' => $mails,
        'ip' => $ip,
        "бадторексит",
        "джсон",
        "юникс"
      ],
      'заголовки' => [
        'Принять' => 'приложение/json',
      ]
    ];
    пытаться {
      $response = $client->post($endpoint, $postdata);
      $response_data = json_decode((string) $response->getBody(), TRUE);
    } поймать (\Exception $e) {
      $response_data = [];
      $response_data['успех'] = 0;
      Drupal::logger('asdentbase')->error('stopforumspam exception '.$e->getMessage());
    }
    $ уверенность = 0,0;
    $конфисчет = 0;
    $конфимакс = 0;
    array_walk_recursive($response_data, функция ($v, $k) use (&$confidence, &$conficount, &$confimax) {
      если ($k == 'уверенность') {
        $уверенность += $v;
        если ($v > $confimax) $confimax = $v;
      }
      если ($k == 'значение') {
        $конфисчет++;
      }
    });

    $sumconfi = $conficount == 0 ? 0.0 : $confidence / $conficount;
    если ($confimax > 80) {
      если ($sumconfi < $confimax) $sumconfi = $confimax;
    }


    вернуть $sumconfi;
  }

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.