Score:0

ฉันจะหยุด Webform Spam ได้อย่างไร

ธง ae

เราได้รับสแปมจากเว็บฟอร์มติดต่อเราที่เรียบง่าย เรากำลังเรียกใช้ Drupal 7 โดยใช้โมดูล Captcha และ Honeypot ความท้าทาย Captcha ถูกตั้งค่าเป็นรูปภาพและเวลา จำกัด ของ Honeypot ถูกตั้งค่าเป็น 4 วินาทีและเปิดใช้งานสำหรับเว็บฟอร์มทั้งหมด แต่เมื่อเร็ว ๆ นี้เราเริ่มได้รับสแปมในอัตรา 4 หรือ 5 โพสต์ต่อนาที ทั้งหมดนี้มาจากที่อยู่ gmail หรือ ru ที่แตกต่างกัน ในขณะนี้ เรายกเลิกการเผยแพร่เว็บฟอร์มที่ไม่เหมาะสม ใครมีคำแนะนำเกี่ยวกับสิ่งที่เราควรลองอีกบ้าง

Score:2
ธง ph

ต่อไปนี้คือสิ่งที่ควรลอง

  • ตั้งชื่อองค์ประกอบ honeypot เป็นอย่างอื่น
  • กำหนดขีดจำกัดการส่งตามที่อยู่ IP บนเว็บฟอร์ม
  • กำหนดขีดจำกัดการส่งโดยคุกกี้บนเว็บฟอร์ม
  • พยายาม แคปช่า v3 หากคุณยังคงใช้ Captcha แบบเก่าอยู่

ข้อเสียของขีดจำกัดการส่งคือผู้คนที่ใช้คอมพิวเตอร์/เครือข่ายที่ใช้ร่วมกันอาจถูกบล็อก และหากคุณใช้คุกกี้ คุณจะต้องจัดการกับกฎหมายเกี่ยวกับคุกกี้

ข้อเสียของ ReCaptcha คือคุณปล่อยให้ Google ตัดสินว่าใครคือผู้ส่งสแปม อาจไม่ใช่ข้อเสียขึ้นอยู่กับมุมมองของคุณที่มีต่อ Google

No Sssweat avatar
ua flag
ลอง `reCaptcha v3` จากประสบการณ์ของฉัน มันใช้งานไม่ได้ ฉันพบว่า v2 มีประสิทธิภาพมากกว่า (
sonfd avatar
in flag
อีกสิ่งหนึ่งที่ฉันใช้จนประสบความสำเร็จคือ [โมดูล Antibot](https://www.drupal.org/project/antibot) แม้ว่าจะต้องเปิดใช้งานจาวาสคริปต์
berramou avatar
gb flag
โมดูลนี้มีประโยชน์เช่นกัน https://www.drupal.org/project/webform_spam_words
Score: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';
    $names = $mails = [];
    ถ้า (is_array (ชื่อ $)) {
      foreach ($name as $n) $names[] = urlencode($n);
    } อื่น {
      $names[] = urlencode($ชื่อ);
    }
    ถ้า (is_array($email)) {
      foreach ($email as $n) $mails[] = md5($n);
    } อื่น {
      $mails[] = md5($อีเมล);
    }
    $postdata = [
      'form_params' => [
        'ชื่อผู้ใช้' => $ชื่อ,
        'emailhash' => $mail,
        'ไอพี' => $ไอพี
        "แบดโทเรซิท",
        "เจสัน",
        "ยูนิกซ์"
      ]
      'ส่วนหัว' => [
        'ยอมรับ' => 'แอปพลิเคชัน/json',
      ]
    ];
    พยายาม {
      $response = $client->post($endpoint, $postdata);
      $response_data = json_decode((สตริง) $response->getBody(), TRUE);
    } จับ (\ข้อยกเว้น $e) {
      $response_data = [];
      $response_data['สำเร็จ'] = 0;
      Drupal::logger('asdentbase')->error('stopforumspam exception '.$e->getMessage());
    }
    $ความมั่นใจ = 0.0;
    $conficount = 0;
    $confimax = 0;
    array_walk_recursive($response_data, function ($v, $k) use (&$confidence, &$conficount, &$confimax) {
      ถ้า ($k == 'ความมั่นใจ') {
        $ความมั่นใจ += $v;
        ถ้า ($v > $confimax) $confimax = $v;
      }
      ถ้า ($k == 'ค่า') {
        $conficount++;
      }
    });

    $sumconfi = $conficount == 0 ? 0.0 : $confidence / $conficount;
    ถ้า ($confimax > 80) {
      ถ้า ($sumconfi < $confimax) $sumconfi = $confimax;
    }


    ส่งคืน $sumconfi;
  }

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา