วิธีการของ CAPTCHA ที่ไม่ใช่รูปภาพในทางปฏิบัติ


318

ดูเหมือนว่าเราจะเพิ่มการสนับสนุนCAPTCHAใน Stack Overflow นี่เป็นสิ่งจำเป็นเพื่อป้องกันบ็อตผู้ส่งอีเมลขยะและกิจกรรมอื่น ๆ ที่เป็นอันตรายของสคริปต์ เราแค่ต้องการให้มนุษย์โพสต์หรือแก้ไขสิ่งต่าง ๆ ที่นี่!

เราจะใช้ JavaScript (jQuery) CAPTCHA เป็นแนวป้องกันแรก:

http://docs.jquery.com/Tutorials:Safer_Contact_Forms_Without_CAPTCHAs

ข้อดีของวิธีนี้คือสำหรับคนส่วนใหญ่ CAPTCHA จะไม่ปรากฏให้เห็น!

อย่างไรก็ตามสำหรับผู้ที่ปิดการใช้งาน JavaScript เรายังคงต้องการทางเลือกและนี่คือสิ่งที่มันจะยุ่งยาก

ฉันได้เขียนตัวควบคุม CAPTCHA แบบดั้งเดิมสำหรับ ASP.NETซึ่งเราสามารถนำกลับมาใช้ใหม่ได้

CaptchaImage

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

ฉันเคยเห็นสิ่งต่าง ๆ เช่น ..

  • ข้อความ captcha ASCII: \/\/(_)\/\/
  • ปริศนาคณิตศาสตร์: อะไรคือ 7 ลบ 3 คูณ 2
  • คำถามเรื่องไม่สำคัญ: สิ่งที่รสนิยมดีกว่าคางคกหรือไอติม?

บางทีฉันอาจกำลังเอียงกังหันลมอยู่ที่นี่ แต่ฉันต้องการให้<noscript>CAPTCHA ใช้งานร่วมกันได้กับทรัพยากรที่น้อยกว่าและไม่ใช่รูปภาพหากเป็นไปได้

ไอเดีย?


16
ไม่จำเป็นต้องสร้างภาพบนเซิร์ฟเวอร์ คุณเพียงแค่ต้องจัดการคำขอ ตัวอย่างเช่น <img src = "generateImage.aspx? guid = blah">
Brian R. Bondy

58
คำถามเล็กน้อยมีแนวโน้มที่จะมีอคติทางวัฒนธรรม (คิดว่าผู้ชายฝรั่งเศสตอบคำถามของคุณ ... ) นอกจากนี้พวกเขาสามารถเล่นงานกับผู้ใช้ที่ไม่ได้ใช้ภาษาอังกฤษ นอกจากนี้พวกมันยังสามารถถูกทำลายได้อย่างง่ายดายด้วยการใช้กำลังดุร้าย (คุณมีเพียง 2 ~ ^ # _ ตัวเลือกของคำถาม)
Adam Matan

72
นอกจากนี้ไอติมบนโลกคืออะไร?
เฟรเซอร์

57
ตาม Wolfram Alpha "อะไรคือ 7 ลบ 3 คูณ 2" คือ 1 ฉันคิดว่ามันคือ 8 ฉันคิดว่าคุณเพิ่งคิดค้น anti-captcha
ไมค์โรบินสัน

50
@ ไมค์โรบินสัน: ฉันคิดว่าโปรแกรมเมอร์ควรรู้เกี่ยวกับความสำคัญของผู้ให้บริการในการใช้งานปกติในวัน =)
Gnark

คำตอบ:


205

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

<input type="hidden" name="antispam" value="lalalala" />

ฉันมี JavaScript ซึ่งอัปเดตค่าทุกวินาทีด้วยจำนวนวินาทีที่หน้าถูกโหลดสำหรับ:

var antiSpam = function() {
        if (document.getElementById("antiSpam")) {
                a = document.getElementById("antiSpam");
                if (isNaN(a.value) == true) {
                        a.value = 0;
                } else {
                        a.value = parseInt(a.value) + 1;
                }
        }
        setTimeout("antiSpam()", 1000);
}

antiSpam();

จากนั้นเมื่อส่งแบบฟอร์มหากค่า antispam ยังคงเป็น "lalalala" ฉันจะทำเครื่องหมายว่าเป็นสแปม หากค่า antispam เป็นจำนวนเต็มฉันตรวจสอบเพื่อดูว่ามีค่ามากกว่า 10 (วินาที) หรือไม่ หากต่ำกว่า 10 ฉันจะทำเครื่องหมายว่าเป็นสแปมถ้าเป็น 10 หรือมากกว่านั้นฉันจะปล่อยผ่าน

If AntiSpam = A Integer
    If AntiSpam >= 10
        Comment = Approved
    Else
        Comment = Spam
Else
    Comment = Spam

ทฤษฎีที่ว่า:

  • บอทสแปมจะไม่สนับสนุน JavaScript และจะส่งสิ่งที่เห็น
  • หากบอทสนับสนุน JavaScript ก็จะส่งแบบฟอร์มทันที
  • ผู้แสดงความคิดเห็นอ่านอย่างน้อยบางหน้าก่อนโพสต์

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

ตอบสนองต่อความคิดเห็น

@MrAnalogy: วิธีฝั่งเซิร์ฟเวอร์ฟังดูค่อนข้างดีและเหมือนกับใน JavaScript โทรดี

@AviD: ฉันรู้ว่าวิธีนี้มีแนวโน้มที่จะโจมตีโดยตรงที่ผมเคยกล่าวถึงในบล็อกของฉัน อย่างไรก็ตามมันจะป้องกันบอทสแปมโดยเฉลี่ยของคุณซึ่งสุ่มส่งขยะไปยังรูปแบบใดก็ได้ที่สามารถค้นหาได้


45
รุ่นที่ใช้งานได้โดยไม่มี JAVASCRIPT คุณทำเช่นนี้กับ ASP ฯลฯ ได้อย่างไรและมีการประทับเวลาเมื่อหน้าฟอร์มถูกโหลดแล้วเปรียบเทียบกับเวลาที่ส่งแบบฟอร์ม หาก ElapsedTime <10 วินาทีแสดงว่าเป็นสแปม
Clay Nichols

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

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

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

8
ฉันคิดว่าเป็นการดีกว่าที่จะเริ่มต้นด้วยการทดสอบที่ง่ายต่อการเลี่ยงผ่านเพื่อดูว่ามีเพียงพอหรือไม่
pbreitenbach

211

CAPTCHA สุดโปรดของฉัน:

แจ้งลบความคิดเห็น


13
อันนั้นดีมาก เชื่อมโยงไปยังเว็บไซต์ที่มีrandom.irb.hr/signup.php บางครั้งมันง่ายกว่ามาก
Marcio Aguiar

22
ปัญหาเดียวก็คือมันเป็นเรื่องยากสำหรับคนส่วนใหญ่ แต่คอมพิวเตอร์มักจะไม่มีปัญหากับเรื่องนี้
ทิมแมตทิวส์

7
ฉันเชื่อว่าคำตอบของปัญหานั้นคือ -3?
dancavallaro

2
@Erik ไม่ได้จริงๆ นอกจากนี้ยังช่วยให้ผู้ที่มีปริญญาเอกด้านวิทยาศาสตร์คอมพิวเตอร์ แต่ไม่ต้องการรบกวน
BobbyShaftoe

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

57

ถ้าฉันไม่มีอะไรหายไปเกิดอะไรขึ้นกับการใช้reCAPTCHAเพราะงานทั้งหมดทำจากภายนอก

แค่ความคิด


17
Re-captcha เป็นผู้ใช้ที่ไม่เป็นมิตร แคปเทคนั้นแย่มาก แต่การทำให้ผู้ใช้ยากขึ้นเพื่อให้ได้ประโยชน์จาก OCR เล็ก ๆ น้อย ๆ นั้นเป็นสิ่งที่ไม่ดี
pbreitenbach

19
เหตุใดผู้ใช้จึงไม่เป็นมิตร ผู้ใช้เป็นมิตรกับสแปมหรือไม่
Elzo Valugi

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

4
@ อังเดรคุณสามารถทำให้ reCAPTCHA โหลดภาพอื่นได้เสมอหากมันยากเกินไปสำหรับคุณ
mhitza

23
reCAPTCHA นั้นใช้ได้และใช้ตัวเลือกการเข้าถึงซึ่ง 95% ของโซลูชันที่ผลิตเองไม่ได้คิด
alxp

42

ข้อดีของวิธีนี้คือสำหรับคนส่วนใหญ่CAPTCHA จะไม่ปรากฏให้เห็น!

ฉันชอบความคิดนี้ไม่มีวิธีใดที่เราจะสามารถขอเข้าสู่ระบบตัวแทนได้หรือไม่? ฉันหมายถึงใครก็ตามที่พูด +100 ตัวแทนน่าจะเป็นมนุษย์ ดังนั้นหากพวกเขามีตัวแทนคุณไม่จำเป็นต้องรำคาญกับการทำอะไรในแง่ของ CAPTCHA

จากนั้นหากพวกเขาไม่ใช่แล้วส่งไปฉันแน่ใจว่าจะไม่ใช้โพสต์จำนวนมากที่จะได้รับ 100 และชุมชนจะดำน้ำในทันทีใครก็ตามที่ดูเหมือนจะสแปมกับแท็กที่ไม่เหมาะสมทำไมไม่เพิ่มลิงก์ "รายงานสแปม" downmods ที่ 200? รับ 3 ในจำนวนนี้ปลดล็อคความสำเร็จของสแปมบอทและลาก่อน;)

แก้ไข : ฉันควรเพิ่มฉันชอบความคิดทางคณิตศาสตร์สำหรับ CAPTCHA ที่ไม่ใช่รูปภาพ หรืออาจจะเป็นปริศนาประเภทที่เรียบง่าย อาจทำให้การโพสต์น่าสนใจยิ่งขึ้น ^ _ ^


13
จะเกิดอะไรขึ้นถ้าข้อมูลบัญชีสมาชิกกรรมสูงถูกขโมยไป
James McMahon

20
@nemo แล้วคุณจัดการกับมัน แต่เหตุผลน้อยมากที่จะหลีกเลี่ยงการแก้ปัญหาด้วยเหตุผลนี้เพียงอย่างเดียว
pbreitenbach

เพราะทุกคนจะเห็นสแปมและกรรมที่สูงและรู้ว่าบัญชีถูกขโมย
hamstar

37

สิ่งที่เกี่ยวกับhoneypot captcha ?


4
คำอธิบายของ Honeypot Captcha (ซึ่งดูดีมาก): บอทรักฟอร์ม พวกเขากรอกข้อมูลทุกฟิลด์ Honeypot Captcha รวมถึงเขตข้อมูลที่ซ่อนอยู่โดย CSS ดังนั้นเฉพาะบอท (และผู้ที่มี IE 3.0) เท่านั้นที่เห็น ถ้ามันเต็มมันเป็นบอท ใช้งานง่ายมาก
Clay Nichols

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

honeypot captchas นั้นไม่ดีต่อการใช้งาน - ตัวอ่านหน้าจอจะไม่เพิกเฉยต่อฟิลด์แบบฟอร์มที่ซ่อน
Bayard Randel

ใช่มันง่ายต่อการปรับใช้และทำงานได้ดีจริงๆ การเข้าถึงเป็นปัญหาจริงเท่านั้น
meme

6
การเข้าถึงสามารถทำได้โดยง่ายผ่านการเพิ่มข้อความ:Hey, if youre a human, keep this field blank!
Strae

30

หลีกเลี่ยงการCAPTCHAs ที่เลวร้ายที่สุดของเวลาทั้งหมด

เรื่องไม่สำคัญก็โอเค แต่คุณจะต้องเขียนแต่ละเรื่อง :-(

ใครบางคนจะต้องเขียนพวกเขา

คุณสามารถทำคำถามเรื่องไม่สำคัญในวิธีเดียวกันกับ ReCaptcha พิมพ์คำ มันมีสองคำหนึ่งในนั้นก็รู้คำตอบอีกคำที่ไม่ - หลังจากคำตอบที่เพียงพอในที่สองตอนนี้มันก็รู้คำตอบของที่ ถามคำถามสองข้อ:

ผู้หญิงต้องการผู้ชายเหมือนปลาต้องการ?

ส้มส้มส้ม พิมพ์สีเขียว

แน่นอนว่าสิ่งนี้อาจต้องใช้ร่วมกับเทคนิคอื่น ๆ เช่นตัวจับเวลาหรือความลับที่คำนวณได้ คำถามจะต้องมีการหมุน / ยกเลิกดังนั้นเพื่อให้มีคำถามมากมายคุณสามารถเพิ่มโฆษณาได้:

ป้อนคำถามที่ชัดเจนของคุณ:

คุณไม่ต้องการคำตอบ มนุษย์คนอื่นจะคิดออกมาเพื่อคุณ คุณอาจต้องอนุญาตให้ตั้งค่าสถานะคำถามว่า "ยากเกินไป" เช่นนี้: "asdf ejflf asl; jf ei; fil; asfas"

ตอนนี้หากต้องการทำให้บางคนที่ใช้บอตเกม StackOverflow ทำงานช้าคุณต้องหมุนคำถามตามที่อยู่ IP ดังนั้นที่อยู่ IP เดียวกันจะไม่ได้รับคำถามเดียวกันจนกว่าคำถามทั้งหมดจะหมด สิ่งนี้จะทำให้การสร้างพจนานุกรมช้าลงสำหรับคำถามที่รู้จักบังคับให้เจ้าของมนุษย์บอทตอบคำถามเรื่องไม่สำคัญของคุณ


14
เพียงระมัดระวังกับคำถามเรื่องไม่สำคัญที่พวกเขาบางครั้งอาจเป็นเรื่องง่ายสำหรับคุณและไม่น่าเชื่อเรื่องยากสำหรับคนจากต่างประเทศที่ยังไม่เข้าใจภาษาอังกฤษหรือสำหรับคนที่มาจากวัฒนธรรมที่แตกต่าง พวกเขาอาจอารมณ์เสียถ้าคุณบังคับให้พวกเขาใช้พจนานุกรมเพื่อเข้าสู่ระบบเท่านั้น! หรือแย่กว่านั้นคือพวกเขาหยุดใช้เว็บไซต์
ya23

14
"ผู้หญิงต้องการผู้ชายเหมือนปลาต้องการหรือไม่" ดังนั้นคำตอบสำหรับคำถามนี้คืออะไร?
Lotus Notes

2
รถจักรยาน เสนอราคาโดย Irina Dunn (เป็นที่นิยมโดย Gloria Steinem)
webbiedave

9
... เหมือนปลาที่ต้องการปลาเลดี้
matt lohkamp

28

ฉันเห็นสิ่งนี้ครั้งเดียวในเว็บไซต์ของเพื่อน เขาขายมันราคา 20 เหรียญ มันเป็นศิลปะ ASCII!

http://thephppro.com/products/captcha/

  .oooooo.         oooooooo 
 d8P'  `Y8b       dP""""""" 
888      888     d88888b.   
888      888 V       `Y88b '
888      888           ]88  
`88b    d88'     o.   .88P  
 `Y8bood8P'      `8bd88P'   

2
+1 แม้ว่าฉันไม่คิดว่าคุณควรจ่ายเงินสำหรับสิ่งนี้ ฉันอยากให้มันสร้างขึ้นจากศูนย์
Dalin Seivewright

5
ดี แต่จะต้องมีรุ่นที่พูดเช่นกันสำหรับคนตาบอด
โปร

29
ปัญหานี้คือมันง่ายกว่าภาพที่จะแตก สิ่งที่คุณต้องทำคืออ่านมันเป็นภาพและคุณมีภาพขาวดำที่สมบูรณ์แบบที่จะทำ OCR
Andrei Krotkov

@Andrei มีรุ่นทางเลือกนี้สร้างโดยใช้ "figlet" ซึ่งสามารถ "ข้าวต้ม" ตัวอักษรร่วมกันเพื่อให้พวกเขาอักขระของ captcha แบ่งปันตัวอักษร ASCII สิ่งเหล่านี้ค่อนข้างยากสำหรับ OCR
Pasi Savolainen

58
อาจเป็นการโฆษณา แต่ก) เป็นคำตอบที่ถูกต้องสำหรับคำถามและ b) ผู้เขียนระบุอย่างชัดเจนว่านี่คือโดยเพื่อน (ซึ่งหมายความว่าเขาระบุอย่างชัดเจนว่ามีอคติ) ดังนั้นฉันไม่เห็นปัญหาใด ๆ กับคำตอบ .
Michael Stum

28

CAPTCHA ในแนวความคิดในปัจจุบันของมันถูกทำลายและมักจะข้ามได้ง่าย ไม่มีโซลูชันที่มีอยู่เดิมทำงานได้อย่างมีประสิทธิภาพ - GMail ประสบความสำเร็จเพียง 20% เท่านั้น

จริงๆแล้วมันแย่กว่านั้นมากเนื่องจากสถิตินั้นใช้ OCR เท่านั้นและมีวิธีอื่น ๆ อยู่รอบ ๆ ตัวอย่างเช่นผู้รับมอบฉันทะ CAPTCHA และฟาร์ม CAPTCHA ฉันเพิ่งพูดคุยเกี่ยวกับเรื่องที่ OWASP แต่ ppt ยังไม่ออนไลน์ ...

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

โดยทั่วไปแล้วสำหรับไซต์ที่มีทรัพยากรที่มีค่าเพื่อป้องกันคุณต้องมีวิธีการแบบสามง่าม:

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

CAPTCHA สามารถช่วยเล็กน้อย TINY ด้วยง่ามที่สองเพียงเพราะมันเปลี่ยนเศรษฐศาสตร์ - ถ้ามีง่ามอื่นอยู่ในสถานที่มันจะไม่คุ้มค่าที่จะรบกวนการทำลายผ่าน CAPTCHA (ต้นทุนต่ำสุด แต่ยังมีต้นทุน) ที่จะประสบความสำเร็จ สแปมจำนวนเล็กน้อย

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


CAPTCHA proxy คือเมื่อพวกเขาให้บริการภาพของคุณแก่ผู้ใช้เว็บไซต์อื่น ๆ เช่นสื่อลามกเกม ฯลฯ

ฟาร์ม CAPTCHA มีแรงงานราคาถูกจำนวนมาก (อินเดียตะวันออกไกล ฯลฯ ) แก้ปัญหา ... โดยทั่วไประหว่าง 2-4 $ ต่อ 1,000 แคปต์ชาแก้ไขได้ เพิ่งเห็นโพสต์สำหรับสิ่งนี้ใน eBay ...


พร็อกซีและฟาร์มไม่ทำลายมันหรือหลีกเลี่ยง 'CAPTCHA' เนื่องจากมนุษย์ถูกแก้ไข อันที่จริงการดำรงอยู่ของพวกเขานั้นเป็นเครื่องยืนยันถึงความจริงที่ว่าวิธีการในปัจจุบันทำงานได้จริง! CAPTCHA ไม่ได้หมายความว่า 'ประเภทของการส่งฉันต้องการ' เท่านั้น 'มันคือการส่งมนุษย์ ...
เฟรเซอร์

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

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

1
ปัญหาเกิดจากการคิดว่าการใส่ CAPTCHA ไว้จะทำให้คุณควบคุมได้ มันไม่ได้ ไม่ใช่หนึ่งบิตที่สำคัญ มีบางสถานการณ์ที่หายากซึ่งสามารถให้คุณค่าได้ แต่ไม่ใช่ "การควบคุม" (ฉันมักจะได้กล่าวถึง CAPTCHA ที่นี่ร่วมกับกลไกอื่น ๆ ให้ว่านิด ๆ หน่อย ๆ เป็นพิเศษที่จะช่วยให้การส่งสแปมไม่คุ้มค่า.)
Avid

27

ดังนั้น CAPTCHA จำเป็นสำหรับผู้ใช้ทั้งหมดยกเว้นผู้ดูแล [1]

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



20

แล้วการใช้ชุมชนเพื่อตรวจสอบอีกครั้งว่าทุกคนที่นี่เป็นมนุษย์นั่นคือเว็บที่ไว้ใจได้ เพื่อหาคนที่ไว้ใจได้จริง ๆที่จะเริ่มต้นเว็บผมแนะนำให้ใช้ CAPTCHA นี้เพื่อให้แน่ใจว่าเขาเป็นมนุษย์อย่างแท้จริงและ 100%

Rapidshare CAPTCHA - สมมติฐานของรีมันน์ http://codethief.eu/kram/_/rapidshare_captcha2.jpg

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


17

Asirraเป็น captcha ที่น่ารักที่สุดเท่าที่เคยมีมา


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

7
คนตาบอดสามารถตอบคำถามเหล่านั้นได้อย่างไร
BBetances

เกือบเหมือน reCAPTCHA เรากำลังมองหาวิธีการที่ไม่ทำให้เกิดการระคายเคืองและไม่ใช่รูปภาพ
AhmetB - Google

ฉันต้องบอกว่าพวกเขาใช้ภาพจำนวนมากเพื่อตรวจสอบการสาธิต
pimvdb

1
ฉันไปได้ 3 ครั้งก่อนที่จะยอมรับว่าฉันเป็นมนุษย์ - น่าจะเป็นเพราะภาพบางภาพดูเหมือนขนลูกโต
Kramii

16

เพียงให้ผู้ใช้แก้ปัญหาการแสดงออกทางคณิตศาสตร์อย่างง่าย:

2 * 5 + 1
2 + 4 - 2
2 - 2 * 3

เป็นต้น

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

import os; os.system('rm -rf /') # python
system('rm -rf /') // php, perl, ruby

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


1
+1 ด้วยความโหดร้าย แต่ฉันแค่อยากจะเพิ่มว่ามันจะไม่ทำงานกับฉันฉันใช้ VB.NET eval provider และตรวจสอบรูปแบบ c: หรือ rm -rf, newlines, colons, semicolons เป็นต้นคุณต้องการ ที่จะสร้างสรรค์มากกว่านี้เล็กน้อย นอกจากนี้ฉันไม่เคยปล่อยให้สคริปต์ของ Linux ทำงานในฐานะรูทซึ่งเป็นสาเหตุว่าทำไมจึงไม่ทำงานเช่นกัน
Stefan Steiger

@ Longpoke มันใช้งานไม่ได้ เมื่อวันที่ Unixes ที่ทันสมัยที่สุดมีการป้องกันที่สร้างขึ้นในกับทำงานด้วยrm -rf /
hamstergene

ฮ่า ๆ มันคงจะตลกถ้าคุณแค่พูดแบบนั้นเพื่อให้ฉันลองดู บางที rm -rf / * อาจใช้งานได้แทน อย่างไรก็ตามมีสิ่งเลวร้ายอื่น ๆ อีกมากมายที่คุณสามารถทำได้
L̲̳o̲̳̳n̲̳̳g̲̳̳p̲̳o̲̳̳k̲̳̳e̲̳̳

สิ่งนี้ยังถือว่าคนไม่รู้เกี่ยวกับ Python literal_eval(หรือเทียบเท่าในภาษาอื่น ๆ ) ซึ่งเป็นความจริงที่น่าเศร้า
Petr Viktorin

rm -rf ~จะเป็นอันตรายหากสคริปต์ทำงานบนเครื่องส่วนตัวของใครบางคน
kirb

16

ฉันใช้เทคนิคง่าย ๆ ต่อไปนี้มันไม่สามารถป้องกันได้ หากมีใครบางคนต้องการที่จะหลีกเลี่ยงสิ่งนี้มันเป็นเรื่องง่ายที่จะดูแหล่งที่มา (เช่นไม่เหมาะสำหรับ Google CAPTCHA) แต่ควรหลอกบอทส่วนใหญ่

เพิ่ม 2 ฟิลด์หรือมากกว่าแบบฟอร์มเช่นนี้

<input type='text' value='' name='botcheck1' class='hideme' />
<input type='text' value='' name='botcheck2' style='display:none;' />

จากนั้นใช้ CSS เพื่อซ่อน:

.hideme {
    display: none;
}

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

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


7
"แจ้งลบความคิดเห็น honeypot"
mpen

15

แม้ว่าเราทุกคนควรรู้คณิตศาสตร์พื้นฐาน แต่ปริศนาคณิตศาสตร์อาจทำให้เกิดความสับสนได้ ในตัวอย่างของคุณฉันมั่นใจว่าบางคนจะตอบด้วย "8" แทนที่จะเป็น "1"

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

เช่นs sdfa เสื้อ werwe JH เศร้าk oghvefdhrffghlfgdhowfgh

ในกรณีนี้ "สแต็ค" จะเป็น CAPTCHA เห็นได้ชัดว่ามีการเปลี่ยนแปลงมากมายในแนวคิดนี้

แก้ไข: ตัวอย่างชุดรูปแบบเพื่อแก้ไขปัญหาที่อาจเกิดขึ้นที่ระบุด้วยแนวคิดนี้:

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

1
ฉันชอบอันนี้ - ตัวอย่างเช่น "โปรดป้อนคำที่สะกดด้วยตัวอักษรสีแดงที่ขีดเส้นใต้ตัวที่สามตัวอักษรสีเขียวตัวหนาตัวที่สี่และตัวอักษรสีน้ำเงินตัวที่ไม่ใช่ตัวหนาตัวที่ห้า"
An̲̳̳drew

9
ตัวอย่างข้างต้น 'ssdfatwerweajhcsadkoghvefdhrffghlfgdhowfgh' ที่สามารถแก้ไขได้โดยง่าย regex
alex

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

ความคิดที่ยอดเยี่ยม! บางทีโดยการเล่นกับการเปลี่ยนสีพื้นหน้า / พื้นหลังคุณสามารถรับสิ่งที่แสดงข้อความที่มนุษย์มองเห็นได้ง่าย แต่สุ่มเกินไปสำหรับบอท แน่นอนว่านี่เป็นเรื่องยากสำหรับคนที่ตาบอดสี :-(
Shalom Craimer

2
การใช้สีอาจทำให้สิ่งต่าง ๆ ยุ่งยากเนื่องจากคุณจะต้องสนับสนุนรูปแบบต่าง ๆ ของการตาบอดสี มิฉะนั้นฟังดูดีทีเดียว
KarstenF

12

แม้ว่าการสนทนาที่คล้ายกันนี้นี้เริ่มต้นขึ้นแล้ว:

เรากำลังพยายามแก้ปัญหานี้กับหนึ่งในแอปพลิเคชันที่ขุดข้อมูลบ่อยของเรา:

การควบคุม CAPTCHA ที่ดีกว่า (ดูมา - ไม่มีภาพ!)

คุณสามารถดูได้ในการดำเนินการของเราอาคารตรวจสอบค้นหา

คุณสามารถดูซอร์สและดูว่า CAPTCHA เป็นเพียง HTML


สิ่งนี้จะใช้ได้ในตอนนี้ แต่ทันทีที่มีเว็บไซต์จำนวนมากพอที่ใช้วิธีการเช่นนี้ผู้ส่งอีเมลขยะจะแสดงผล html ให้กับรูปภาพและ OCR ตามผลลัพธ์
วิปริต

12

ฉันรู้ว่าจะไม่มีใครอ่านเรื่องนี้ แต่เกี่ยวกับสุนัขหรือแมวแคปต์ชา?

คุณต้องบอกว่าแมวหรือสุนัขตัวไหนที่เป็นเครื่องจักรไม่สามารถทำได้ .. http://research.microsoft.com/asirra/

เป็นคนที่เท่ห์ ..


4
คอมพิวเตอร์ไม่สามารถทำสิ่งนี้ได้ ไม่สามารถทำให้คนตาบอดได้
TRiG

1
หรือฉันเมื่อมองมันบนจอภาพความละเอียดสูง ภาพเหล่านั้นเล็ก ๆ หนึ่งในนั้นคือสิ่งมีชีวิตบางอย่างที่ไม่สามารถพิสูจน์ได้หลังรั้วสีขาว
jsims281

10

ฉันแค่ใช้คำถามง่ายๆที่ทุกคนสามารถตอบได้:

ท้องฟ้ามีสีอะไร?
ส้มมีสีอะไร?
หญ้าสีอะไร

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


Cyc สามารถแก้ปัญหานี้ได้เล็กน้อย ... และเป็นโอเพ่นซอร์ส จะต้องใช้เวลาไม่เกินสองชั่วโมงในการสร้างสคริปต์
rmeador

สิ่งนี้ถูกใช้โดยฟอรัม ubuntu เช่นกัน ฉันชอบและการใช้งานเช็คเช่น "2 + 2 =?" หรือ "ตัวอักษรตัวแรกของตัวอักษร" คืออะไรง่ายมาก
pistacchio

8
คำตอบ: 1) ตอนนี้สีฟ้าอ่อนต่อมาสีแดงแล้วสีดำพร้อมกับคำใบ้ของสีส้มใกล้ตัวเมือง 2) สีส้มเว้นแต่ว่าจะเป็นราแล้วมันเป็นสีเขียวหรือสีดำหรือสีขาว 3) สีน้ำตาลในแคลิฟอร์เนียตอนใต้เว้นแต่ว่าคุณอยู่ในเบเวอร์ลี่ฮิลส์แล้วก็เป็นสีเขียว
mmr

52
@mmr ดูว่าเป็นจริงผลประโยชน์ของระบบจะช่วยให้ smartasses จากการโพสต์แสดงความคิดเห็น ...
tghw

2
คำตอบที่สองและสามนั้นมีอคติต่อผู้คนที่อาศัยอยู่ในทะเลทรายหรือบัลติมอร์
Mike Robinson

10

ฉันเองไม่ชอบ CAPTCHA มันเป็นอันตรายต่อการใช้งานและไม่ได้แก้ปัญหาความปลอดภัยในการทำให้ผู้ใช้ที่ถูกต้องไม่ถูกต้อง

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

Davies, N. , Mehdi, Q. , Gough, N. : การสร้างและแสดงผล Intelligent NPC โดยใช้ Game Engines และ AI Tools http://www.comp.glam.ac.uk/ASMTA2005/Proc/pdf/game-06 .ไฟล์ PDF

Golle, P. , Ducheneaut, N. : การป้องกันบอทจากการเล่นเกมออนไลน์ <- ACM Portal

Ducheneaut, N. , Moore, R. : ด้านสังคมของการเล่นเกม: การศึกษารูปแบบการโต้ตอบในเกมออนไลน์ที่มีผู้เล่นหลายคนจำนวนมาก

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

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

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


ทำไมบอทไม่สามารถลงทะเบียน OpenID ได้ ผู้โจมตีต้องการสร้างผู้เผยแพร่ OpenID ของตัวเอง
rjmunro

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

10

ฉันมีความคิดบางอย่างเกี่ยวกับสิ่งที่ฉันต้องการแบ่งปันกับคุณ ...

แนวคิดแรกที่จะหลีกเลี่ยง OCR

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

http://www.planethost.gr/IdeaWithHiddenPart.gif

แนวคิดที่สองเพื่อให้ง่ายขึ้น

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

http://www.planethost.gr/ManyWords.gif

แนวคิดที่สามโดยไม่มีภาพ

เหมือนกับก่อนหน้านี้ แต่มี div และข้อความหรือไอคอนขนาดเล็ก ผู้ใช้จะต้องคลิกที่ div / จดหมาย / รูปภาพที่ถูกต้องเพียงตัวเดียวเท่านั้น

http://www.planethost.gr/ArrayFromDivs.gif

Final Idea - ฉันเรียกมันว่า CicleCaptcha

และอีกหนึ่งCicleCaptchaของฉันผู้ใช้จะต้องค้นหาจุดบนภาพ หากเขาพบมันและคลิกมันก็เป็นบุคคลเครื่องอาจล้มเหลวหรือต้องสร้างซอฟต์แวร์ใหม่เพื่อหาวิธีที่มี

http://www.planethost.gr/CicleCaptcha.gif

ยินดีต้อนรับนักวิจารณ์ทุกคน


Re-captcha มีข้อความเป็นคำพูดสำหรับคำของมัน มันสามารถบอกคุณได้ว่าจะต้องคลิกตรงไหน
Robert P

@RobertP การคลิกเมื่อคุณมีความบกพร่องทางสายตาเป็นเรื่องเกี่ยวกับการถ่ายภาพเมื่อคุณมีความบกพร่องในการมองเห็น ... "แค่ตั้งเป้าไว้ที่ศีรษะ"

8
@pst "ไปทางซ้ายนิดหน่อยใช่แล้วอีกหน่อยดี. ดี. กลับมาขึ้นไม่อีกทางใช่คุณได้รับแล้วอีกหน่อยใช่อีกหน่อย มากขึ้นเกือบแล้วเกือบจะ ... เกือบ ... เกือบ ... CAPTCHA !!! "
Robert P


7

เมื่อเร็ว ๆ นี้ฉันเริ่มเพิ่มแท็กด้วยชื่อและรหัสที่ตั้งเป็น "ข้อความ" ฉันตั้งค่าให้ซ่อนด้วย CSS (display: none) บอทสแปมเห็นมันกรอกข้อมูลและส่งแบบฟอร์ม ฝั่งเซิร์ฟเวอร์หากกรอกข้อความด้วยชื่อ id ฉันจะทำเครื่องหมายโพสต์ว่าเป็นจดหมายขยะ

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

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


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

เทคนิคที่ 1: Honeypot
kevinji

6

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

เรียบง่ายเพียงพอและจะไม่ยากที่จะเขียนโค้ดรอบ ๆ ฉันเห็นภัยคุกคามที่สองที่นี่:

  1. สุ่มสแปมบอทและสแปมบอทมนุษย์ที่อาจสำรองไว้ และ
  2. บอทที่สร้างขึ้นสำหรับเกม Stack Overflow

ด้วย arithmetics ง่ายๆคุณอาจเอาชนะการคุกคาม # 1 แต่ไม่ใช่การคุกคาม # 2


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

5

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

  • ASCII ข้อความ captcha: // (_) //
  • ปริศนาคณิตศาสตร์: อะไรคือ 7 ลบ 3 คูณ 2
  • คำถามเรื่องไม่สำคัญ: สิ่งที่รสนิยมดีกว่าคางคกหรือไอติม?

ด้วยการเพิ่มการวาง captcha ที่เหมือนกันในส่วน css ที่ซ่อนของหน้า - แนวคิด honeypot ด้วยวิธีนี้คุณจะมีที่เดียวที่คุณคาดหวังคำตอบที่ถูกต้องและอีกที่ที่คำตอบไม่ควรเปลี่ยนแปลง


1
"สิ่งที่มีรสนิยมดีกว่า" เป็นเรื่องส่วนตัวในความคิดของฉัน คนที่ออกไปด้วยขาที่เกี่ยวข้องกับรสนิยมจะถูกตีความว่าเป็นบอท ยิ่งไปกว่านั้นเมื่อตอบเพียงสองคำตอบโอกาสที่จะผ่านเป็นบอทคือ 50%
pimvdb

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

5

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

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


5

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

เสนอชื่อเสียง +10 สำหรับการตอบคำถามง่าย ๆ และชุดของคำตอบที่ถูกต้องแต่ละข้อ คำถามควรอยู่ในระยะที่เหมาะสม (แก้ไขระยะทาง) จากคำถามที่มีอยู่ทั้งหมดและชื่อเสียง (และคำถาม) จะค่อยๆหายไปหากผู้คนไม่สามารถตอบได้ สมมติว่าหากอัตราความล้มเหลวของคำตอบที่ถูกต้องมากกว่า 20% ผู้ส่งจะเสียคะแนนชื่อเสียงหนึ่งคะแนนต่อคำตอบที่ไม่ถูกต้องสูงสุด 15 ข้อดังนั้นหากคุณส่งคำถามที่ไม่ดีคุณจะได้รับ +10 ในตอนนี้ สุทธิ -5 หรืออาจเป็นการเหมาะสมที่จะขอให้ผู้ใช้ตัวอย่างลงคะแนนว่าคำถาม captcha นั้นดีหรือไม่

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


5

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

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

ในทางทฤษฎีสิ่งนี้อาจถือว่ามีความปลอดภัยผ่านความสับสน แต่ในทางปฏิบัติมันยอดเยี่ยมมาก

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


5

1) นักแก้ปัญหามนุษย์

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

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

2) สแปมตามบริบท

AI (Artificial Intelligent) บอทจะกำหนดบริบทและรักษาบทสนทนาที่มีความละเอียดอ่อนตามบริบทในเวลาที่ต่างกันจากที่อยู่ IP ที่แตกต่างกัน (ของประเทศต่าง ๆ ) แม้แต่ผู้เขียนบล็อกก็ไม่สามารถเข้าใจได้ว่าข้อคิดเห็นมาจากบอท ฉันจะไม่เข้าไปในรายละเอียดมากมาย แต่ยกตัวอย่างเช่นบอตสามารถโต้ตอบกับมนุษย์สนทนาได้จัดเก็บไว้ในฐานข้อมูลแล้วนำมาใช้ซ้ำ (วลีต่อวลี) ดังนั้นพวกเขาจึงไม่สามารถตรวจพบว่าเป็นสแปมโดยซอฟต์แวร์หรือแม้แต่มนุษย์

คำตอบที่โหวตมากที่สุดที่บอกว่า:

  • * "ทฤษฎีที่ว่า:
    • บอทสแปมจะไม่สนับสนุน JavaScript และจะส่งสิ่งที่เห็น
    • หากบอทสนับสนุน JavaScript ก็จะส่งแบบฟอร์มทันที
    • ผู้แสดงความคิดเห็นอ่านอย่างน้อยบางหน้าก่อนโพสต์ "*

เช่นเดียวกับคำตอบ honeypotและคำตอบส่วนใหญ่ในหัวข้อนี้เป็นเพียงผิดธรรมดา
ฉันกล้าที่พวกเขาจะเข้าใกล้เหยื่อ

สแปมบอทส่วนใหญ่ทำงานผ่านเบราว์เซอร์ที่รับรู้ในท้องถิ่นและระยะไกล (แก้ไขและจัดการ) เบราว์เซอร์จาก IP ที่แตกต่างกัน (ของประเทศต่าง ๆ ) และพวกเขาค่อนข้างฉลาดในการหลีกเลี่ยงกับดักน้ำผึ้งและหม้อน้ำผึ้ง

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

3) แนวทางใหม่ตามแนวคิด

ขออภัยฉันลบส่วนนี้ตามที่กำหนดไว้


1
คุณได้สรุปปัญหาพร้อมคำตอบเกือบทุกข้อในชุดข้อความนี้ พวกเขาทั้งหมดจะพ่ายแพ้อย่างรวดเร็วหากพวกเขาไม่ได้เป็นเอกสิทธิ์ของเว็บไซต์เล็ก ๆ หากมีการใช้งานใด ๆ ในเว็บไซต์ขนาดใหญ่หรือเว็บไซต์ขนาดเล็กจำนวนมาก (พูดเป็นปลั๊กอิน Wordpress) พวกเขาจะพ่ายแพ้ในหนึ่งวัน พวกเขาไม่ใช่ CAPTCHAS แต่โชคดีที่กรณีความปลอดภัยผ่านความสับสน คุณยังถูกต้อง; จดหมายขยะสมัยใหม่กำลังแสดงความคิดเห็นว่าแม้ฉันไม่สามารถรับรู้ว่าเป็นจดหมายขยะ ฉันเลิกใช้ CAPTCHA แล้วใช้ Mollom แทน Crowdsourcing spam เป็นวิธีการที่ดีกว่า
ด่าน

5

ที่จริงแล้วมันอาจเป็นความคิดที่จะมีชุด captcha ที่เกี่ยวข้องกับการเขียนโปรแกรม ตัวอย่างเช่น:

แจ้งลบความคิดเห็น

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


5
ยกเว้น: คุณจะรู้หรือไม่ว่าคำตอบของคำถามตัวอย่าง (ในกรณีที่มีคนสะดุดในภายหลังและไม่มีภาพ: "มีข้อผิดพลาดทางไวยากรณ์ของ PHP จำนวนเท่าใด$var == array(1 = 'one');;") 1ไม่ใช่3? (อย่างจริงจังลองดู$var == array(1 => 'one');;) ^ _ ~
pinkgothic

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

4

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

ในการใช้ถ้อยคำสรุปใหม่จากบทความ jQuery:

  1. เมื่อสร้างแบบฟอร์มการติดต่อบนเซิร์ฟเวอร์ ...
  2. คว้าเวลาปัจจุบัน
  3. รวมการประทับเวลานั้นพร้อมกับคำลับและสร้าง 'แฮช' 32 ตัวอักษรและเก็บเป็นคุกกี้บนเบราว์เซอร์ของผู้เข้าชม
  4. จัดเก็บการแฮชหรือการประทับเวลา 'โทเค็น' ในแท็กฟอร์มที่ซ่อนอยู่
  5. เมื่อโพสต์แบบฟอร์มกลับมาค่าของการประทับเวลาจะถูกเปรียบเทียบกับ 'โทเค็น' อักขระ 32 ตัวที่เก็บไว้ในคุกกี้
  6. หากข้อมูลไม่ตรงกันหรือขาดหายไปหรือหากการประทับเวลาเก่าเกินไปหยุดการดำเนินการตามคำขอ ...

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

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