ฉันจะป้องกันสแปมบนเว็บไซต์ที่ฉันควบคุมได้อย่างไร


27

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

หากคำถามของคุณถูกปิดเป็นซ้ำของคำถามนี้และคุณรู้สึกว่าข้อมูลที่ให้ไว้ที่นี่ไม่ได้ให้คำตอบที่เพียงพอโปรดเปิดการอภิปรายเกี่ยวกับPro เว็บมาสเตอร์ Meta


สำหรับวัตถุประสงค์ของคำถามนี้สแปมจะรวมถึง:

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

คำตอบ:


27

รายการต่อไปนี้จัดโดยความสะดวกในการใช้งานค่าบำรุงรักษาและประสิทธิภาพในการป้องกันสแปม:

ปิดใช้งานเนื้อหาที่ผู้ใช้สร้างขึ้นทั้งหมด

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

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

การจัดการเนื้อหาที่ผู้ใช้สร้างขึ้นจากภายนอก

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

CAPTCHA

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

ข้อเสียของ CAPTCHA ก็คือ

  1. CAPTCHAs รูปแบบส่วนใหญ่ให้ระดับความรำคาญสำหรับผู้ใช้

  2. มันไม่ได้ป้องกัน 100% โปรดทราบว่าการทดสอบเหล่านี้จำนวนมากสามารถทำได้โดยคอมพิวเตอร์หากโปรแกรมเมอร์ที่เชี่ยวชาญตัดสินใจลงทุนเวลาและความพยายามในปัญหา

คำถาม & คำตอบ

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

หมายเหตุ: คำถามเช่น "อะไรคือ 1 + 1" ทำงานได้ไม่ดีเพราะพวกเขามักจะใช้และคนที่สร้างสแปมบอทโปรแกรมพวกเขาเพื่อตอบคำถามดังกล่าวอย่างถูกต้อง

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

สนามที่ซ่อนอยู่

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

การวิเคราะห์ปริมาณการใช้ข้อมูลและเนื้อหา

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

มีความหลากหลายของบุคคลที่สาม CAPTCHA และการวิเคราะห์การจราจรการแก้ปัญหาที่มีอิสระ (หรือถูก) กับการใช้งานและซอฟต์แวร์โอเพนซอร์สการจัดการเนื้อหาส่วนใหญ่รวมถึงโมดูลสำหรับการใช้บริการเช่นแบบบูรณาการเป็นAkismetและreCAPTCHA

บล็อกคำที่มีอยู่ในจดหมายขยะ

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

rel="nofollow"

ผู้ส่งอีเมลขยะมักจะเน้นไปที่ไซต์ที่อนุญาตให้โพสต์ลิงก์ที่เครื่องมือค้นหาจะติดตาม (ซึ่งจะเป็นการปรับปรุงอันดับการค้นหาของเว็บไซต์ที่โฆษณา)

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

การกลั่นกรองโดยผู้ใช้

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

gamification

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

การตรวจสอบโดยผู้ดูแลระบบ

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

ลงทะเบียนผู้ใช้

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

ดูแลผู้ใช้ใหม่

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

จำกัด ขีดความสามารถของผู้ใช้ใหม่

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

เรียกเก็บเงินจากผู้ใช้สำหรับการเป็นสมาชิก

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

เชิญเท่านั้น

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

ต่อไปนี้มาจากProject BOTCHA , Drupal

HoneyPot

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

HoneyPot2

เหมือนกับข้างต้น แต่ใช้เป็นแหล่งที่มาของการคำนวณไม่ใช่ค่าของเขตข้อมูลเฉพาะ แต่เป็นข้อมูลจาก CSS

ObscureUrl

คล้ายกับ HoneyPot2: สร้างโดย JS เปรียบเทียบกับความต้องการ ความแตกต่างคือค่าเริ่มต้นจะถูกส่งผ่านพารามิเตอร์ GET

ข้อสรุป

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


1
+1 ผ่านการตอบกลับ! ฉันจะเพิ่มว่าคุณสามารถใช้ระบบรางวัลบางประเภทสำหรับผู้ใช้ที่รายงานสแปมเป็นส่วนหนึ่งของวิธีการ "กลั่นกรองโดยผู้ใช้" ในแอปพลิเคชันที่ฉันกำลังสร้างตอนนี้ผู้ใช้ที่รายงานสแปมสำเร็จจะได้รับ "คะแนนนักฆ่าสแปม" ซึ่งเปรียบเสมือนสิทธิ์ในการโม้ที่ปรากฏในโปรไฟล์ของพวกเขา นอกจากนี้พวกเขายังสามารถใช้คะแนนเหล่านี้เช่นสกุลเงินในเว็บไซต์เพื่อให้ได้ผลลัพธ์การแสดงรายการที่สูงขึ้นในการค้นหาโปรไฟล์ แน่นอนว่านี่เป็นการเปิดโอกาสให้มีการละเมิดดังนั้นฉันจึงต้องหาวิธีที่จะต่อสู้กับสแปมในรูปแบบนั้น
JakeRow123

@ JakeRow123 ฉันได้เพิ่มหัวข้อเกี่ยวกับ gamification: อย่าลังเลที่จะแก้ไขและเพิ่มความคิดของคุณ

5

เมื่อเร็ว ๆ นี้เราได้กำจัดสแปมออกจากแบบฟอร์มติดต่อเราด้วยการใช้งานที่ง่ายมาก เราได้เพิ่มการป้อนข้อมูลที่มีป้ายกำกับ "URL:" ในรูปแบบ HTML และทำให้ผู้ใช้ตัวจริงมองไม่เห็น จากนั้นในหน่วยประมวลผลแบบฟอร์มเราตรวจสอบเพื่อดูว่ามันมีค่าและดำเนินการตาม

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

ด้วยวิธีการง่ายๆนี้เราได้ส่งข้อความ "ติดต่อเรา" ประมาณ 30 ฉบับต่อวันไปที่ศูนย์

ขอให้โชคดีกับทุกสิ่งที่คุณเลือก!


ในอินพุต <form> เรารวม: <p class = "antispam"> ปล่อยให้ฟิลด์นี้ว่าง: <input name = "url" width = "200" /> </p> ในสคริปต์การประมวลผลเรามี: ถ้า (isset ($ _ SESSION ['url']) && $ _SESSION ['url'] == '') {อีเมล ($ ถึง, $ หัวเรื่อง, $ body, $ หัวเรื่อง); }
WebDevKev

1

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

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


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

1 Akismet ดูเหมือนว่าจะทำผลงานที่ดีงาม dosnt รับพวกเขาทั้งหมดและ somtimes บล็อกความคิดเห็นที่ legit แต่ 99% ของเวลาที่เหมาะสมของมัน
sam

0

กรุณาเยี่ยมชม MediaWiki
ค้นหาส่วนขยาย: การกลั่นกรอง
ส่วนขยายนี้จะช่วยคุณป้องกันสแปมบนไซต์ที่คุณควบคุม
ฉันใช้ MediaWiki Extension นี้หลายครั้ง
และจะหยุดบอทจากการสร้างบทความสแปม

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