ป้องกันบอทที่เป็นอันตรายจากการโพสต์สแปม


15

ฉันจำเว็บไซต์ที่ปิดเนื่องจากการใช้งานในทางที่ผิดและฉันสงสัยว่าบอทมีส่วนร่วมหรือไม่ หากบอทกำลังโพสต์บางสิ่งบางอย่างในเว็บไซต์ของฉันฉันจะต่อสู้กับมันได้อย่างไร ฉันกำลังคิดที่จะตั้งค่าคุกกี้และเปลี่ยนคุกกี้ผ่าน JavaScript + การประทับเวลาและลงชื่อ (ดังนั้นคุกกี้ของเมื่อวานไม่สามารถใช้งานได้ในวันนี้และสัปดาห์หน้า)

ฉันแน่ใจว่าคน / บอทส่วนใหญ่จะใช้ไซต์อื่นแทนการเปิดใช้งาน JavaScript ในบอทของพวกเขา

ฉันจะทำอะไรได้อีก ฉันกำลังคิดวงเงินโพสต์รายวันและ honeypot สำหรับบอททั่วไปที่เพิ่งโพสต์สแปมแบบสุ่ม

คำตอบ:


13

คุณสามารถทำสิ่งต่าง ๆ รวมถึง:

  1. การใส่ฟิลด์ปลอมที่บอทเท่านั้นจะเห็น ถ้าฟิลด์นั้นถูกส่งพร้อมกับแบบฟอร์มที่เหลือคุณสามารถเพิกเฉยได้ (และแบนถ้าต้องการ) นอกจากนี้คุณยังสามารถบอทกับดักที่ไม่ดีที่ทำตามการเชื่อมโยงที่ซ่อนอยู่

  2. ใช้ CAPTCHA เช่นreCAPTCHA

  3. ใช้ฟิลด์ที่ต้องการให้ผู้ใช้ตอบคำถามเช่นอะไรคือ 5 + 3 มนุษย์ทุกคนสามารถตอบคำถามได้ แต่บอทจะไม่รู้ว่าต้องทำอย่างไรเนื่องจากเป็นฟิลด์ที่เติมข้อมูลโดยอัตโนมัติตามชื่อฟิลด์ ดังนั้นฟิลด์นั้นจะไม่ถูกต้องหรือหายไปซึ่งในกรณีนี้การส่งจะถูกปฏิเสธ

  4. ใช้โทเค็นและใส่ลงในเซสชันและเพิ่มไปยังแบบฟอร์ม หากโทเค็นไม่ได้ถูกส่งมาพร้อมกับแบบฟอร์มหรือไม่ตรงกันก็เป็นไปโดยอัตโนมัติและสามารถละเว้น

  5. ค้นหาการส่งซ้ำจากที่อยู่ IP เดียวกัน หากแบบฟอร์มของคุณไม่ได้รับคำขอมากเกินไป แต่ทันใดนั้นอาจเป็นเพราะบอตกำลังถูกโจมตีและคุณควรพิจารณาปิดกั้นที่อยู่ IP ชั่วคราว

  6. ใช้Askimet เป็นการดีที่จะระบุสแปม


5
+1 - และโดยพื้นฐานแล้วคุณจะต้องใช้การรวมกันของคำแนะนำที่ระบุไว้ข้างต้นในแบบที่เป็นมิตรกับผู้ใช้ (ตัวอย่างเช่นหากผู้ใช้ปิดการใช้งาน Javascript และไม่ผ่านการตรวจสอบความถูกต้องตามจาวาสคริปต์
danlefree

6

John Conde สรุปแนวทางที่ดีมากมาย ปัญหาของการเลือกใช้เทคนิคต่อต้านสแปม / ป้องกันสแปมคือการสร้างสมดุลระหว่างประสิทธิผลและความสะดวกสบาย มันจะไม่สะดวกจริงๆที่จะต้องกรอก CAPTCHA ทุกครั้งที่คุณต้องการโพสต์ความคิดเห็นหรือข้อความ แต่ถ้าคุณต้องการเพียงแค่ CAPTCHA ในการสมัครสมาชิกบางครั้งก็ไม่ได้ขัดขวางผู้ส่งอีเมลขยะ

เทคนิคแฝงบางอย่างเป็นทางเลือกที่ดีเนื่องจากไม่ต้องการการกระทำของมนุษย์ ปัญหาคือบอตนั้นมีความซับซ้อนมากขึ้นเรื่อย ๆ และถ้าบอตสามารถแก้แคปต์ชาได้ก็จะสามารถประมวลผล JS และ CSS ได้อย่างแน่นอน ดังนั้นคุณจะต้องใช้ความเฉลียวฉลาดเล็กน้อยเช่นการใช้ CSS ที่ไม่ค่อยชัดเจนเพื่อซ่อนฟิลด์ bot-trap ของคุณ

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

สุดท้ายอีกวิธีหนึ่งที่คุณสามารถกำจัดสแปมเว็บไซต์ของคุณคือการใช้การกลั่นกรองโดยเพื่อนเพื่อลบความคิดเห็นใด ๆ ที่บอทส่งหรือส่งสแปมที่ส่งด้วยตนเอง


คุณอธิบายความคิดของการกลั่นกรองเพื่อนได้ไหม? สิ่งนั้นเกี่ยวข้องกับผู้ใช้ปกติที่ได้รับสิทธิ์ของโมเดอเรเตอร์หรือไม่
0xC0000022L

@STATUS_ACCESS_DENIED: ขออภัยสำหรับการตอบกลับล่าช้า แต่การกลั่นกรองเพียร์นั้นเป็นสิ่งที่ต้องการ digg, slashdot, stackexchange และอื่น ๆ ที่ผู้ใช้สามารถกลั่นกรองเนื้อหาในไซต์โดยให้ความคิดเห็นเชิงบวกหรือเชิงลบ ดังนั้นคุณสามารถทำให้ระบบอัตโนมัติเมื่อผู้ใช้มากพอที่จะให้ข้อเสนอแนะเชิงลบกับเนื้อหาส่วนหนึ่งมันจะถูกซ่อนหรือตั้งค่าสถานะเพื่อตรวจสอบโดยอัตโนมัติ บนไซต์เช่น StackExchange ผู้ใช้ยังสามารถตั้งค่าสถานะความคิดเห็น / คำตอบว่าเป็นสแปมซึ่งนำไปสู่ความสนใจของผู้ดูแลระบบ สิ่งนี้จะช่วยลดงานที่ผู้ดูแลระบบต้องจ่าย
Lèsemajesté

ขอบคุณ แน่นอนว่านี่จะทำงานเฉพาะในเว็บไซต์ที่มีการเข้าชมสูงซึ่งผู้ใช้สามารถใส่ใจเพื่อแสดงความคิดเห็นได้มากพอ)
0xC0000022L

1

ตามที่ John Conde พูดถึงใน # 1) และคุณพูดถึง honeypot สามารถทำงานได้ดีมากสำหรับกรณีส่วนใหญ่และเว็บไซต์ส่วนใหญ่ ถ้ามันทำโดยบอทคุณสามารถทำหนึ่งในวิธีอื่น ๆ ที่จอห์นพูดเช่นกัน แต่โดยสุจริตหากไซต์ของคุณมีปริมาณการเข้าชมต่ำหรือเฉลี่ยนี่น่าจะเป็นเคล็ดลับ

ตัวอย่างหนึ่งในรายการโปรดของฉัน:

<form action="/process-form">
<input name="email" placeholder="Enter Your Email">
<input name="email_address" placeholder="Enter Your Email" style="display:none;">
<input type="submit" value="Submit"></form>

ตอนนี้เมื่อมีการส่งแบบฟอร์มบอตที่สูงมากจะกรอกทั้ง "อีเมล" และ "email_address" แต่มนุษย์จะกรอกแบบฟอร์มที่พวกเขาเห็น "อีเมล" เท่านั้นและไม่ใช่ "email_address" ดังนั้นในรหัส `/ แบบฟอร์มกระบวนการ 'ของคุณคุณเพียงแค่ต้องตรวจสอบว่า email_address ว่างเปล่า (ไม่) สำหรับการตรวจสอบ

ง่ายและมีประสิทธิภาพ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.