Cách tiếp cận CAPTCHA không dựa trên hình ảnh thực tế?


318

Có vẻ như chúng tôi sẽ thêm hỗ trợ CAPTCHA vào Stack Overflow. Điều này là cần thiết để ngăn chặn bot, kẻ gửi thư rác và các hoạt động kịch bản độc hại khác. Chúng tôi chỉ muốn con người đăng hoặc chỉnh sửa mọi thứ ở đây!

Chúng tôi sẽ sử dụng CAPTCHA (jQuery) CAPTCHA như một hàng phòng thủ đầu tiên:

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

Ưu điểm của phương pháp này là, đối với hầu hết mọi người, CAPTCHA sẽ không bao giờ được nhìn thấy!

Tuy nhiên, đối với những người bị JavaScript bị vô hiệu hóa, chúng tôi vẫn cần một dự phòng và đây là lúc nó trở nên khó khăn.

Tôi đã viết một điều khiển CAPTCHA truyền thống cho ASP.NET mà chúng ta có thể sử dụng lại.

Hình ảnh CAPTCHA

Tuy nhiên, tôi muốn đi với một cái gì đó bằng văn bản để tránh chi phí tạo ra tất cả những hình ảnh này trên máy chủ với mỗi yêu cầu.

Tôi đã thấy những thứ như ..

  • Mã xác thực văn bản ASCII: \/\/(_)\/\/
  • câu đố toán học: 7 trừ 3 lần 2 là gì?
  • câu hỏi đố: những gì ngon hơn, một con cóc hoặc một popsicle?

Có lẽ tôi chỉ nghiêng về cối xay gió ở đây, nhưng tôi muốn có một <noscript>CAPTCHA tương thích không dựa trên tài nguyên, ít hình ảnh hơn nếu có thể.

Ý tưởng?


16
Không cần thực sự tạo một hình ảnh trên máy chủ. Bạn chỉ cần xử lý yêu cầu. Ví dụ: <img src = "createdImage.aspx? Guide = blah">
Brian R. Bondy

58
Các câu hỏi đố thường thiên về văn hóa (nghĩ về một anh chàng người Pháp trả lời câu hỏi của bạn ...). Hơn nữa, họ có thể giải quyết những người dùng không biết tiếng Anh. Ngoài ra, chúng có thể dễ dàng bị phá vỡ bằng cách sử dụng vũ lực (bạn chỉ có ~ 2 ^ # _ OfQuestions tùy chọn).
Adam Matan

72
Ngoài ra, những gì trên trái đất là một popsicle?
Fraser

57
Theo Wolfram Alpha, "7 trừ 3 lần 2" là 1. Tôi nghĩ đó là 8. Tôi nghĩ bạn vừa phát minh ra tính năng chống captcha.
Mike Robinson

50
@Mike Robinson: Tôi nghĩ rằng các lập trình viên nên biết về quyền ưu tiên của nhà điều hành trong việc sử dụng ngày BÌNH THƯỜNG =)
Gnark

Câu trả lời:


205

Một phương pháp mà tôi đã phát triển và dường như hoạt động hoàn hảo (mặc dù tôi có thể không nhận được nhiều thư rác nhận xét như bạn), là có một trường ẩn và điền nó với giá trị không có thật, ví dụ:

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

Sau đó tôi có một đoạn JavaScript cập nhật giá trị mỗi giây với số giây mà trang đã được tải cho:

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();

Sau đó, khi biểu mẫu được gửi, Nếu giá trị chống thư rác vẫn là "lalalala", thì tôi đánh dấu nó là thư rác. Nếu giá trị antispam là một số nguyên, tôi kiểm tra xem liệu nó có cao hơn 10 (giây) không. Nếu nó dưới 10, tôi đánh dấu nó là thư rác, nếu nó từ 10 trở lên, tôi sẽ để nó qua.

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

Lý thuyết là:

  • Một bot spam sẽ không hỗ trợ JavaScript và sẽ gửi những gì nó thấy
  • Nếu bot hỗ trợ JavaScript, nó sẽ gửi biểu mẫu ngay lập tức
  • Người bình luận ít nhất đã đọc một số trang trước khi đăng

Nhược điểm của phương pháp này là nó yêu cầu JavaScript và nếu bạn không bật JavaScript, bình luận của bạn sẽ bị đánh dấu là spam, tuy nhiên, tôi đánh giá các bình luận được đánh dấu là spam, vì vậy đây không phải là vấn đề.

Phản hồi ý kiến

@MrAnalogy: Cách tiếp cận phía máy chủ nghe có vẻ khá hay và hoàn toàn giống với cách thực hiện trong JavaScript. Cuộc gọi tốt.

@AviD: Tôi biết rằng phương pháp này dễ bị tấn công trực tiếp như tôi đã đề cập trên blog của mình . Tuy nhiên, nó sẽ bảo vệ chống lại bot spam trung bình của bạn, thứ mù quáng gửi rác đến bất kỳ hình thức nào nó có thể tìm thấy.


45
PHIÊN BẢN RATNG CÔNG TRÌNH KHÔNG CÓ JAVASCRIPT Làm thế nào nếu bạn làm điều này với ASP, v.v. và có dấu thời gian khi trang biểu mẫu được tải và sau đó so sánh với thời điểm biểu mẫu được gửi. Nếu ElapsedTime <10 giây thì có khả năng là thư rác.
Clay Nichols

28
Rất rõ ràng có thể bỏ qua, nếu một người dùng độc hại phiền muộn để xem xét nó. Mặc dù tôi chắc chắn rằng bạn biết về điều này, tôi đoán rằng bạn cho rằng họ sẽ không làm phiền ... Chà, nếu đó không phải là một trang web có giá trị, thì bạn đã đúng và họ sẽ không làm phiền - nhưng nếu đó là, sau đó họ sẽ, và đi xung quanh nó đủ dễ dàng ...
AviD

48
Đây là một thay đổi về điều này mà tôi sử dụng. Làm cho giá trị ẩn trở thành thời gian mã hóa được đặt thành bây giờ. Sau khi đăng lại, hãy xác minh rằng từ 10 giây đến 10 phút đã trôi qua. Điều này cho phép những kẻ lừa đảo, những người sẽ cố gắng cắm vào một số giá trị luôn luôn hợp lệ.
Tim Scott

7
Đối với tất cả những người đã chỉ ra rằng các bot có thể vượt qua ... Điều này tôi biết như tôi đã chỉ ra trong câu trả lời. Đây là một phương pháp rất đơn giản để ngăn chặn bot trung bình của bạn và người dùng nhàm chán. Tôi hiện đang sử dụng nó trên blog của mình và cho đến nay, nó đã thành công 100%.
GateKiller

8
Tôi nghĩ tốt hơn là bắt đầu với các bài kiểm tra dễ bỏ qua để xem chúng có đầy đủ không.
poustitenbach

211

13
Đó là một trong những tuyệt vời. Liên kết đến trang web là Random.irb.hr/signup.php . Đôi khi nó dễ dàng hơn nhiều
Marcio Aguiar

22
Vấn đề duy nhất là nó thực sự khó với phần lớn con người nhưng máy tính thường sẽ không có vấn đề gì với điều này.
Tim Matthews

7
Tôi tin rằng câu trả lời cho vấn đề đó là -3?
dancavallaro

2
@Erik, không hẳn vậy. Nó cũng giữ những người có bằng tiến sĩ về khoa học máy tính nhưng không muốn làm phiền.
BobbyShaftoe

28
-3 có vẻ đúng. Tôi nhớ đã sử dụng trang web này để nghiên cứu cách đây một thời gian và khi tôi đến Captcha, tôi đã rất hạnh phúc vì nó thú vị và khác biệt. Nó là để truy cập vào một bộ tạo số ngẫu nhiên lượng tử sử dụng nguồn phân rã phóng xạ thực tế.
Alex

57

Trừ khi tôi thiếu một cái gì đó, có gì sai khi sử dụng reCAPTCHA vì tất cả công việc được thực hiện bên ngoài.

Chỉ là một ý nghĩ.


17
Re-captcha là người dùng thù địch. Captchs là đủ xấu. Nhưng làm cho người dùng khó khăn hơn để có được một số lợi ích OCR nhỏ là rất thù địch.
poustitenbach

19
Tại sao người dùng thù địch? thư rác có thân thiện với người dùng không?
Elzo Valugi

14
Đó là sự thù địch của người dùng vì đôi khi hình ảnh khó giải mã ngay cả đối với con người và có thể gây ra sự thất vọng ở người dùng hợp pháp khi điều này xảy ra. Xem liên kết của Josh với CAPTCHAS tệ nhất để biết một số ví dụ về quá trình giải mã hình ảnh quá khó.
Andrei Fierbinteanu

4
@Andrei bạn luôn có thể khiến reCAPTCHA tải một hình ảnh khác nếu nó quá khó với bạn.
mhitza

23
reCAPTCHA vẫn ổn, và nó thực hiện một tùy chọn trợ năng mà 95% các giải pháp trong nhà thậm chí không nghĩ tới.
alxp

42

Ưu điểm của phương pháp này là, đối với hầu hết mọi người, CAPTCHA sẽ không bao giờ được nhìn thấy!

Tôi thích ý tưởng này, không có cách nào chúng ta có thể nối vào hệ thống đại diện? Ý tôi là, bất cứ ai có đại diện +100 đều có khả năng là một con người. Vì vậy, nếu họ có đại diện, bạn thậm chí không cần phải thực hiện BẤT CỨ điều gì về CAPTCHA.

Sau đó, nếu không, sau đó gửi nó, tôi chắc chắn rằng sẽ không có nhiều bài đăng đến 100 và cộng đồng sẽ ngay lập tức lặn xuống bất cứ ai dường như đang spam với các thẻ gây khó chịu, tại sao không thêm liên kết "báo cáo spam" mà downmods bằng 200? Nhận 3 trong số đó, mở khóa thành tích spambot, tạm biệt;)

EDIT : Tôi cũng nên thêm, tôi thích ý tưởng toán học cho CAPTCHA không có hình ảnh. Hoặc có lẽ là một câu đố kiểu đơn giản . Có thể làm cho bài viết thậm chí thú vị hơn ^ _ ^


13
Điều gì xảy ra nếu thông tin tài khoản thành viên nghiệp lực cao bị đánh cắp?
James McMahon

20
@nemo Sau đó, bạn đối phó với nó. Nhưng rất ít lý do để tránh một giải pháp cho lý do này một mình.
poustitenbach

Vì mọi người sẽ thấy thư rác và nghiệp lực cao và biết rằng một tài khoản đã bị đánh cắp.
hamstar

37

Một captcha honeypot thì sao?


4
Giải thích về Honeypot Captcha (có vẻ rất tốt): Bots hình thức tình yêu. Họ điền vào tất cả các lĩnh vực. Captcha honeypot bao gồm một trường được HIDDEN bằng CSS để chỉ các bot (và những người có IE 3.0) nhìn thấy nó. Nếu nó đầy, nó là một bot. Rất dễ thực hiện.
Clay Nichols

5
Một lần nữa, bỏ qua tầm thường với một khoản đầu tư thời gian rất tối thiểu. Đúng, bạn sẽ quản lý để chặn một số tập lệnh, nhưng nếu trang web của bạn có giá trị thì đó không phải là mối đe dọa chính của bạn.
AviD

honeypot captchas là xấu cho khả năng sử dụng - người đọc màn hình sẽ không bỏ qua các trường mẫu ẩn.
Bayard Randel

Vâng, điều này là đơn giản để triển khai và hoạt động thực sự tốt. Khả năng tiếp cận là vấn đề thực sự duy nhất.
meme

6
khả năng truy cập có thể bằng cách bỏ qua đơn giản thêm một số văn bản:Hey, if youre a human, keep this field blank!
Strae

30

Tránh những CAPTCHA tồi tệ nhất mọi thời đại .

Câu đố là được, nhưng bạn sẽ phải viết từng người trong số họ :-(

Ai đó sẽ phải viết chúng.

Bạn có thể thực hiện các câu hỏi nhỏ giống như cách ReCaptcha in các từ. Nó cung cấp hai từ, một trong số đó biết câu trả lời, một từ mà nó không - sau khi có đủ câu trả lời vào lần thứ hai, giờ nó cũng biết câu trả lời cho điều đó. Đặt hai câu hỏi nhỏ:

Một người phụ nữ cần một người đàn ông như một con cá cần một?

Cam cam. Gõ xanh.

Tất nhiên, điều này có thể cần phải được kết hợp với các kỹ thuật khác, chẳng hạn như bộ tính giờ hoặc bí mật được tính toán. Các câu hỏi sẽ cần phải được xoay vòng / nghỉ hưu, vì vậy để tiếp tục cung cấp các câu hỏi, bạn có thể thêm vào:

Nhập câu hỏi rõ ràng của bạn:

Bạn thậm chí không cần một câu trả lời; những người khác sẽ tìm ra điều đó cho bạn. Bạn có thể phải cho phép các câu hỏi gắn cờ là "quá khó", như câu hỏi này: "asdf ejflf asl; jf ei; fil; asfas".

Bây giờ, để làm chậm ai đó đang chạy bot chơi trò chơi StackOverflow, bạn sẽ xoay các câu hỏi theo địa chỉ IP - vì vậy cùng một địa chỉ IP không nhận được cùng một câu hỏi cho đến khi hết câu hỏi. Điều này làm chậm việc xây dựng một từ điển các câu hỏi đã biết, buộc chủ nhân của các bot phải trả lời tất cả các câu hỏi nhỏ của bạn.


14
Hãy cẩn thận với những câu hỏi nhỏ vì đôi khi chúng có thể dễ với bạn và cực kỳ khó đối với những người từ các quốc gia khác nhau không thành thạo tiếng Anh hoặc cho những người có nguồn gốc từ các nền văn hóa khác nhau. Họ có thể khó chịu nếu bạn buộc họ chỉ sử dụng từ điển để đăng nhập! Hoặc thậm chí tệ hơn, họ chỉ ngừng sử dụng trang web.
ya23

14
"Một người phụ nữ cần một người đàn ông như một con cá cần một?" Vậy câu trả lời cho câu hỏi này là gì?
Lotus Notes

2
Xe đạp. Trích dẫn của Irina Dunn (phổ biến bởi Gloria Steinem).
webbiedave

9
... giống như một con cá cần một con cá lady.
matt lohkamp

28

Tôi đã thấy điều này một lần trên trang web của một người bạn. Ông đang bán nó với giá 20 đô la. Đó là nghệ thuật 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, mặc dù tôi không nghĩ bạn nên trả tiền cho những thứ như thế này. Tôi muốn có nó được xây dựng từ đầu.
Dalin Seivewright

5
tốt, nhưng sẽ cần một phiên bản nói cũng như cho người mù
pro

29
Vấn đề với điều này là nó dễ dàng hơn một hình ảnh để bẻ khóa. Tất cả những gì bạn cần làm là đọc nó thành một bức tranh, và bạn có một hình ảnh đen trắng hoàn hảo để thực hiện OCR.
Andrei Krotkov

@Andrei, có phiên bản thay thế cho cái này, được tạo bằng "figlet", cái này có thể "kết hợp" các ký tự lại với nhau để các ký tự của captcha chia sẻ ký tự ASCII. Đây là một chút khó khăn hơn để OCR.
Pasi Savolainen

58
Nó có thể là quảng cáo nhưng a) đó là một câu trả lời hợp lệ cho câu hỏi và b) tác giả nói rõ rằng đây là của một người bạn (có nghĩa là anh ta nói rõ ràng là thiên vị), vì vậy tôi không thấy bất kỳ vấn đề nào với câu trả lời .
Michael Stum

28

CAPTCHA, theo khái niệm hiện tại của nó, đã bị hỏng và thường dễ bị bỏ qua. Không có giải pháp hiện tại nào hoạt động hiệu quả - GMail chỉ thành công 20% ​​thời gian.

Thực tế còn tệ hơn thế nhiều, vì thống kê đó chỉ sử dụng OCR, và có nhiều cách khác xung quanh nó - ví dụ: proxy proxy và trang trại CAPTCHA. Gần đây tôi đã nói chuyện về chủ đề này tại OWASP, nhưng ppt vẫn chưa trực tuyến ...

Mặc dù CAPTCHA không thể cung cấp sự bảo vệ thực tế dưới mọi hình thức, nhưng nó có thể đủ cho nhu cầu của bạn, nếu điều bạn muốn là chặn rác thông thường. Nhưng nó sẽ không dừng ngay cả những kẻ gửi thư rác bán chuyên nghiệp.

Thông thường, đối với một trang web có tài nguyên có giá trị để bảo vệ, bạn cần có cách tiếp cận 3 hướng:

  • Phản hồi ga chỉ từ người dùng được xác thực, không cho phép bài viết ẩn danh.
  • Giảm thiểu (không ngăn chặn) một vài bài đăng rác từ người dùng được xác thực - ví dụ: dựa trên danh tiếng. Người điều hành con người cũng có thể giúp đỡ ở đây, nhưng sau đó bạn gặp các vấn đề khác - cụ thể là ngập lụt (hoặc thậm chí chết đuối) người điều hành và một số trang web thích sự cởi mở ...
  • Sử dụng logic heuristic phía máy chủ để xác định hành vi giống như thư rác hoặc tốt hơn là hành vi không giống con người.

CAPTCHA có thể giúp một chút TINY với prong thứ hai, đơn giản là vì nó thay đổi tính kinh tế - nếu các prongs khác được đưa ra, sẽ không còn đáng để vượt qua CAPTCHA (chi phí tối thiểu, nhưng vẫn là chi phí) để thành công như vậy một lượng nhỏ thư rác.

Một lần nữa, không phải tất cả thư rác của bạn (và các rác khác) sẽ được tạo từ máy tính - sử dụng proxy CAPTCHA hoặc trang trại cho những kẻ xấu có thể có người thật đang spam bạn.


Proxy proxy là khi họ phân phát hình ảnh của bạn cho người dùng của các trang web khác, ví dụ như khiêu dâm, trò chơi, v.v.

Một trang trại CAPTCHA có nhiều lao động giá rẻ (Ấn Độ, viễn đông, v.v.) giải quyết chúng ... thường là từ 2-4 đô la cho mỗi 1000 captcha được giải quyết. Gần đây đã thấy một bài đăng cho điều này trên Ebay ...


Proxy và trang trại không phá vỡ nó hoặc đi xung quanh 'CAPTCHA' khi chúng đang được con người giải quyết. Thật vậy, sự tồn tại của chúng là bằng chứng cho thấy các phương pháp hiện tại DO hoạt động! CAPTCHA không có nghĩa là 'Loại bài tôi muốn' chỉ 'Đây có phải là bài nộp của con người' ...
Fraser

10
Chính xác! Nhưng CAPTCHA thường được sử dụng để ngăn chặn "bot" - và vấn đề không phải là những bot này có phải là người hay không, mục đích là để ngăn chặn việc sử dụng hàng loạt, không sử dụng cá nhân. Điều này chỉ chứng minh điều tôi luôn nói, CAPTCHA giải quyết vấn đề sai (và làm rất tệ) ...
AviD

Có rất nhiều tình huống captcha là tốt. Vấn đề là chủ sở hữu trang web nên chọn giải pháp cân bằng trải nghiệm người dùng với quyền kiểm soát. Đối với một số người, không có hình ảnh xác thực. Đối với những người khác, captcha. Đối với những người khác, một cái gì đó khác. Nhưng chỉ cần loại bỏ captcha hoàn toàn không thông minh.
poustitenbach

1
Vấn đề bắt nguồn từ suy nghĩ rằng việc đưa CAPTCHA vào, sẽ cho bạn quyền kiểm soát đó. Nó không. Không một chút đáng kể. Có một số tình huống hiếm hoi mà nó có thể cung cấp một số giá trị, nhưng KHÔNG "kiểm soát". (Tôi thường đề cập đến CAPTCHA ở đây, cùng với các cơ chế khác cung cấp thêm một chút để giúp việc gửi thư rác không đáng giá.)
AviD

27

Vì vậy, CAPTCHA là bắt buộc đối với tất cả người dùng ngoại trừ người kiểm duyệt. [1]

Điều đó cực kỳ ngu ngốc. Vì vậy, sẽ có người dùng có thể chỉnh sửa bất kỳ bài đăng nào trên trang web nhưng không đăng bài mà không có CAPTCHA? Nếu bạn có đủ đại diện để tải xuống các bài đăng, bạn có đủ đại diện để đăng mà không cần CAPTCHA. Làm cho nó cao hơn nếu bạn phải. Ngoài ra, có rất nhiều phương pháp phát hiện thư rác mà bạn có thể sử dụng mà không cần nhận dạng hình ảnh, do đó, ngay cả đối với người dùng chưa đăng ký, sẽ không bao giờ cần phải điền vào các biểu mẫu CAPTCHA bị từ chối.



20

Điều gì về việc sử dụng chính cộng đồng để kiểm tra lại rằng tất cả mọi người ở đây là con người, tức là một cái gì đó giống như một trang web tin cậy? Để tìm một người thực sự đáng tin cậy để bắt đầu web, tôi khuyên bạn nên sử dụng CAPTCHA này để đảm bảo anh ấy hoàn toàn và 100% là con người.

Rapidshare CAPTCHA - Giả thuyết Riemann http://codethief.eu/kram/_/rapidshare_captcha2.jpg

Chắc chắn, có một cơ hội nhỏ mà anh ấy quá bận rộn với việc chuẩn bị bài phát biểu về Huy chương Trường để giúp chúng tôi xây dựng mạng lưới niềm tin nhưng cũng ...


17

Asirra là captcha đáng yêu nhất từng có.


Lúc đầu tôi đọc nó là "Asirra là hình ảnh xác thực dễ chấp nhận nhất từ ​​trước đến nay". Điều đó đã ném tôi đi một chút. Tôi đồng ý rằng nó có lẽ là đáng yêu nhất, nhưng giống như trên trang web, một người viết bot có thể lưu tất cả các hình ảnh (có thể mất một lúc), phân loại chúng sau đó bot sẽ phá vỡ nó một cách dễ dàng.
Dalin Seivewright

7
Làm thế nào một người mù có thể trả lời những người đó?
BBetances

nó gần giống như reCAPTCHA. chúng tôi đang tìm kiếm một cách tiếp cận ít gây khó chịu và không dựa trên hình ảnh.
AhmetB - Google

Tôi phải nói rằng họ sử dụng khá nhiều hình ảnh để kiểm tra bản demo của họ.
pimvdb

1
Tôi đã có 3 lần trước khi nó thừa nhận rằng tôi là một con người - có lẽ vì một số hình ảnh trông giống như những quả bóng lông lớn.
Kramii

16

Chỉ cần làm cho người dùng giải các biểu thức số học đơn giản:

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

Vân vân.

Một khi những kẻ gửi thư rác bắt được, sẽ rất dễ để phát hiện ra chúng. Bất cứ khi nào một spammer được phát hiện yêu cầu, hãy chuyển đổi giữa hai lệnh sau:

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

Rõ ràng, lý do tại sao điều này hoạt động là bởi vì tất cả những kẻ gửi thư rác đều đủ thông minh để sử dụng evalđể giải mã captcha trong một dòng mã.


1
Cũng +1 cho sự tàn ác, nhưng tôi chỉ muốn thêm rằng điều này sẽ không hoạt động với tôi, tôi sử dụng nhà cung cấp eval VB.NET và kiểm tra định dạng c: hoặc rm -rf, dòng mới, dấu hai chấm, dấu chấm phẩy, v.v. để được một chút sáng tạo hơn thế. Và bên cạnh đó, tôi không bao giờ để các tập lệnh Linux chạy bằng root, đó là lý do tại sao điều này cũng không hoạt động.
Stefan Steiger

@Longpoke Nó đơn giản là không hoạt động. Trên hầu hết các Unix hiện đại đều có bảo vệ tích hợp rmchống lại việc chạy với -rf /.
hamstergene

lol sẽ thật buồn cười nếu bạn chỉ nói điều đó để khiến tôi thử nó. Có lẽ rm -rf / * sẽ hoạt động thay thế. Dù sao, có rất nhiều điều xấu khác bạn có thể làm.
L̲̳o̲̳̳n̲̳̳g̲̳̳p̲̳o̲̳̳k̲̳̳e̲̳̳

Điều này cũng cho rằng mọi người không biết về Python literal_eval(hoặc tương đương trong các ngôn ngữ khác), đây là một thực tế khá đáng buồn.
Petr Viktorin

rm -rf ~sẽ bị phá hủy nếu tập lệnh đang chạy trên máy cá nhân của ai đó
kirb

16

Tôi đã sử dụng kỹ thuật đơn giản sau đây, nó không thể đánh lừa được. Nếu ai đó thực sự muốn bỏ qua điều này, thật dễ dàng để xem nguồn (nghĩa là không phù hợp với Google CAPTCHA) nhưng nó sẽ đánh lừa hầu hết các bot.

Thêm 2 hoặc nhiều trường mẫu như thế này:

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

Sau đó sử dụng CSS để ẩn chúng:

.hideme {
    display: none;
}

Khi gửi kiểm tra để xem liệu các trường biểu mẫu có bất kỳ dữ liệu nào trong đó không, nếu chúng không thực hiện bài đăng mẫu. Lý do là các bot sẽ đọc HTML và cố gắng điền vào mọi trường mẫu trong khi con người sẽ không nhìn thấy các trường đầu vào và để chúng yên.

Rõ ràng có nhiều điều nữa bạn có thể làm để làm cho điều này ít khai thác hơn nhưng đây chỉ là một khái niệm cơ bản.


7
"captcha honeypot"
mở cửa

15

Mặc dù tất cả chúng ta nên biết toán học cơ bản, câu đố toán học có thể gây ra một số nhầm lẫn. Trong ví dụ của bạn, tôi chắc chắn một số người sẽ trả lời bằng "8" thay vì "1".

Một chuỗi văn bản đơn giản với các ký tự ngẫu nhiên được tô đậm hoặc in nghiêng sẽ phù hợp? Người dùng chỉ cần nhập các chữ in đậm / in nghiêng là CAPTCHA.

Ví dụ: s sdfa t werwe a jh c sad k oghvefdhrffghlfgdhowfgh

Trong trường hợp này, "stack" sẽ là CAPTCHA. Rõ ràng có rất nhiều biến thể về ý tưởng này.

Chỉnh sửa: Các biến thể ví dụ để giải quyết một số vấn đề tiềm ẩn được xác định với ý tưởng này:

  • sử dụng chữ màu ngẫu nhiên thay vì in đậm / in nghiêng.
  • sử dụng mỗi chữ cái đỏ thứ hai cho CAPTCHA (giảm khả năng các bot xác định các chữ cái được định dạng khác nhau để đoán CAPTCHA)

1
Tôi thích cái này - ví dụ "vui lòng nhập từ được đánh vần bởi chữ cái màu đỏ được gạch chân thứ ba, chữ cái màu xanh đậm thứ tư và chữ cái màu xanh không đậm thứ năm".
Trả lời

9
Ví dụ trên 'ssdfatwerweajhcsadkoghvefdhrffghlfgdhowfgh' có thể được giải quyết bằng một regex đơn giản
alex

Điều này sẽ không tốt cho người dùng với acalcula. Có những nhà khoa học mắc chứng này nên không có lý khi có thể có lập trình viên với nó.
BobbyShaftoe

Ý tưởng tuyệt vời Có lẽ ngay cả khi chơi với việc thay đổi màu nền trước / nền, bạn có thể nhận được thứ gì đó hiển thị văn bản dễ thấy đối với con người, nhưng quá ngẫu nhiên cho bot? Tất nhiên điều này khó hơn với những người mù màu :-(
Shalom Craimer

2
Sử dụng màu sắc có thể làm phức tạp mọi thứ, bởi vì bạn sẽ cần phải hỗ trợ các dạng mù màu khác nhau. Nếu không thì điều này nghe khá tốt.
KarstenF

12

Mặc dù cuộc thảo luận tương tự này đã được bắt đầu:

Chúng tôi đang thử giải pháp này trên một trong những ứng dụng được khai thác dữ liệu thường xuyên của chúng tôi:

Kiểm soát CAPTCHA tốt hơn (Nhìn Ma - KHÔNG ẢNH HƯỞNG!)

Bạn có thể thấy nó hoạt động trên Tìm kiếm Thanh tra Xây dựng của chúng tôi .

Bạn có thể xem Nguồn và thấy rằng CAPTCHA chỉ là HTML.


Điều đó sẽ hoạt động cho NGAY BÂY GIỜ, nhưng ngay khi đủ các trang web sử dụng một cách tiếp cận như vậy, những kẻ gửi thư rác sẽ kết xuất html thành hình ảnh và kết quả OCR.
warp

12

Tôi biết rằng sẽ không có ai đọc cái này, nhưng còn con chó hay con mèo thì sao?

Bạn cần nói ai là mèo hay chó, máy móc không thể làm điều này .. http://research.microsoft.com/asirra/

Là một trong những mát mẻ ..


4
Máy tính không thể làm điều này. Người mù cũng không được.
TRiG

1
Cũng không phải tôi, khi nhìn vào nó trên một màn hình độ phân giải cao. Những hình ảnh đó là TINY. Ngoài ra một trong số chúng là của một số sinh vật không xác định được đằng sau một hàng rào trắng.
jsims281

10

Tôi chỉ sử dụng những câu hỏi đơn giản mà bất cứ ai cũng có thể trả lời:

Bầu trời có màu gì?
Một quả cam có màu gì?
Cỏ có màu gì?

Nó khiến cho ai đó phải tùy chỉnh chương trình bot vào trang web của bạn, điều này có lẽ không đáng để bỏ công sức. Nếu họ làm, bạn chỉ cần thay đổi các câu hỏi.


Cyc có thể giải quyết vấn đề này một cách tầm thường ... và đó là nguồn mở. Sẽ cần nhiều nhất một vài giờ để viết kịch bản.
rmeador

cái này cũng được sử dụng bởi diễn đàn ubfox. tôi thích nó và việc triển khai kiểm tra như "2 + 2 =?" hoặc "chữ cái đầu tiên của bảng chữ cái" là gì rất đơn giản.
quả hồ trăn

8
Các câu trả lời: 1) Ngay bây giờ, một màu xanh nhạt, sau đó, đỏ, rồi đen với gợi ý của màu cam gần trung tâm thành phố. 2) màu cam, trừ khi nó bị mốc, sau đó là màu xanh lá cây hoặc đen hoặc trắng. 3) màu nâu, ở Nam California, trừ khi bạn ở Beverly Hills, thì nó có màu xanh.
mmr

52
@mmr Xem, đó thực sự là một lợi ích của hệ thống, nó giữ cho những người thông minh không đăng bình luận ...
tghw

2
Câu trả lời thứ hai và thứ ba thiên về những người sống ở sa mạc hoặc Baltimore.
Mike Robinson

10

Cá nhân tôi không thích CAPTCHA, nó gây hại cho khả năng sử dụng và không giải quyết được vấn đề bảo mật khiến người dùng hợp lệ không hợp lệ.

Tôi thích các phương pháp phát hiện bot mà bạn có thể làm phía máy chủ. Vì bạn có người dùng hợp lệ (nhờ OpenID), bạn có thể chặn những người không "cư xử", bạn chỉ cần xác định các mẫu của bot và khớp với mẫu của người dùng thông thường và tính toán sự khác biệt.

Davies, N., Mehdi, Q., Gough, N .: Tạo và trực quan hóa một NPC thông minh bằng cách sử dụng Công cụ trò chơi và Công cụ AI http://www.comp.glam.ac.uk/ASMTA2005/Proc/pdf/game-06 .pdf

Golle, P., Ducheneaut, N .: Ngăn chặn Bots chơi các trò chơi trực tuyến <- Cổng thông tin ACM

Ducheneaut, N., Moore, R .: Mặt xã hội của trò chơi: Một nghiên cứu về mô hình tương tác trong một trò chơi trực tuyến nhiều người chơi

Chắc chắn hầu hết các tài liệu tham khảo này đều chỉ ra phát hiện bot trò chơi video, nhưng đó là bởi vì đó là chủ đề của bài báo của nhóm chúng tôi có tiêu đề Robot Wars: Khám phá trong trò chơi Nhận dạng Robot . Nó đã không được công bố hoặc bất cứ điều gì, chỉ là một cái gì đó cho một dự án trường học. Tôi có thể gửi email nếu bạn quan tâm. Thực tế là ngay cả khi nó dựa trên phát hiện bot trò chơi video, bạn có thể khái quát nó lên web vì có một người dùng gắn liền với mô hình sử dụng.

Tôi đồng ý với phương pháp của MusiGenesis về phương pháp này bởi vì đó là những gì tôi sử dụng trên trang web của mình và nó hoạt động rất tốt. Quá trình CAPTCHA vô hình là một cách tốt để chặn hầu hết các tập lệnh, nhưng điều đó vẫn không ngăn người viết kịch bản đảo ngược phương pháp của bạn và "giả mạo" các giá trị bạn đang tìm kiếm trong javascript.

Tôi sẽ nói phương pháp tốt nhất là 1) thiết lập người dùng để bạn có thể chặn khi họ xấu, 2) xác định thuật toán phát hiện các mẫu điển hình so với các mẫu sử dụng trang web không điển hình và 3) chặn người dùng đó theo đó.


Tại sao bot không thể đăng ký OpenID? Kẻ tấn công chỉ cần tạo nhà xuất bản OpenID của riêng họ.
rjmunro

Có @rjmunro, và đó là một điều tốt. Khó khăn của internet là nhận dạng người dùng ẩn danh. Nếu bot đăng ký OpenID và bạn xác định người dùng OpenID đó là bot thì bạn có thể tắt nó. Nó không còn ẩn danh. Điều đó không ngăn chặn nhiều đăng ký của cùng một nhà cung cấp, nhưng sau đó bạn có thể tắt nhà cung cấp đó để cho phép bot. Mục tiêu là loại bỏ tính ẩn danh của internet một cách tốt nhất có thể.
jwendl

10

Tôi có một số ý tưởng về điều mà tôi muốn chia sẻ với bạn ...

Ý tưởng đầu tiên để tránh OCR

Một hình ảnh xác thực có một số phần bị ẩn khỏi người dùng, nhưng hình ảnh đầy đủ là hai mã cùng nhau, vì vậy các chương trình OCR và trang trại captcha đọc hình ảnh bao gồm phần hiển thị và phần ẩn, cố gắng giải mã cả hai và không gửi được. .. - Tôi đã sẵn sàng sửa cái đó và làm việc trực tuyến.

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

Ý tưởng thứ hai để làm cho nó dễ dàng hơn

Một trang có nhiều từ mà con người phải chọn đúng. Tôi cũng đã tạo ra cái này, rất đơn giản. Các từ là hình ảnh rõ ràng, và người dùng phải nhấp vào bên phải.

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

Ý tưởng thứ ba với hình ảnh ra

Giống như trước đây, nhưng với div và văn bản hoặc biểu tượng nhỏ. Người dùng chỉ cần nhấp vào đúng một div / chữ / hình ảnh, bao giờ hết.

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

Ý tưởng cuối cùng - tôi gọi nó là CicleCaptcha

Và thêm một CicleCaptcha của tôi , người dùng phải xác định vị trí một điểm trên hình ảnh. Nếu anh ta tìm thấy nó và nhấp vào nó, thì đó là một người, máy móc có thể thất bại hoặc cần tạo phần mềm mới để tìm cách với phần mềm này.

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

Bất kỳ nhà phê bình đều được chào đón.


Re-captcha có văn bản để nói cho lời nói của nó. Nó có thể cho bạn biết nơi để nhấp.
Robert P

@RobertP Nhấp vào khi bạn khiếm thị giống như chụp khi bạn bị khiếm thị ... "Chỉ nhắm vào đầu".

8
@pst "Một chút về bên trái. Đúng rồi, một chút nữa. Tốt. Tốt rồi. Bây giờ quay lại. Không, ngược lại. Vâng, bạn đã hiểu rồi. Chỉ một chút nữa thôi nhiều hơn nữa. Gần như ở đó. Gần như ... gần như ... gần như ... CAPTCHA !!! "
Robert P


7

Gần đây, tôi bắt đầu thêm một thẻ với tên và id được đặt thành "tin nhắn". Tôi đặt nó thành ẩn với CSS (display: none). Các bot spam nhìn thấy nó, điền vào và gửi biểu mẫu. Phía máy chủ, nếu văn bản có tên id được điền vào, tôi đánh dấu bài đăng là spam.

Một kỹ thuật khác tôi đang làm việc trên nó tạo ngẫu nhiên tên và id, với một số là kiểm tra spam và một số khác là các trường thông thường.

Điều này hoạt động rất tốt đối với tôi và tôi chưa nhận được bất kỳ thư rác thành công nào. Tuy nhiên, tôi nhận được ít khách truy cập hơn vào các trang web của mình :)


Sử dụng css để ẩn trường biểu mẫu và khẳng định nó trống cũng có tác dụng với tôi. Không phải bằng chứng ngu ngốc nhưng là một lựa chọn tốt.
Chris

Kỹ thuật 1: Honeypot
kevinji

6

Số học rất đơn giản là tốt. Người mù sẽ có thể trả lời. (Nhưng như Jarod đã nói, hãy cẩn thận với quyền ưu tiên của nhà điều hành.) Tôi tập hợp ai đó có thể viết một trình phân tích cú pháp, nhưng nó làm cho việc spam trở nên tốn kém hơn.

Đủ đơn giản, và sẽ không khó để viết mã xung quanh nó. Tôi thấy hai mối đe dọa ở đây:

  1. spam bots ngẫu nhiên và spam bots con người có thể sao lưu chúng; và
  2. bot được tạo để chơi trò chơi Stack Overflow

Với mỹ phẩm đơn giản, bạn có thể đánh bại mối đe dọa số 1, nhưng không phải mối đe dọa số 2.


Một trình phân tích cú pháp, tôi cho rằng, dễ dàng hơn đáng kể so với việc viết một trình bẻ khóa hình ảnh. Hãy nhớ rằng, điều dễ dàng nhất mà bạn cung cấp cho người dùng là những gì một spambot có thể sẽ sử dụng. Đáng buồn thay, captcha không có JS cần phải khó hơn.
stalepretzel

5

Điều gì xảy ra nếu bạn sử dụng kết hợp các ý tưởng captcha bạn có (chọn bất kỳ ý tưởng nào trong số chúng - hoặc chọn một trong số chúng một cách ngẫu nhiên):

  • Mã xác thực văn bản ASCII: // (_) //
  • câu đố toán học: 7 trừ 3 lần 2 là gì?
  • câu hỏi đố: những gì ngon hơn, một con cóc hoặc một popsicle?

với việc bổ sung chính xác captcha trong phần ẩn css của trang - ý tưởng honeypot. Bằng cách đó, bạn sẽ có một nơi mà bạn mong đợi câu trả lời đúng và một nơi khác mà câu trả lời sẽ không thay đổi.


1
"Những gì ngon hơn" theo ý kiến ​​của tôi là khá chủ quan. Những người đi ra ngoài trên một chi liên quan đến hương vị sẽ được hiểu là một bot. Hơn nữa, chỉ với hai câu trả lời, cơ hội vượt qua như một bot là 50%.
pimvdb

Đúng về phần chủ quan, nhưng cụ thể là từ câu hỏi ban đầu. Quan điểm của tôi là sử dụng ngẫu nhiên cả ba (hoặc nhiều loại). Ngoài ra, cơ hội vượt qua chỉ là 50% nếu câu trả lời là nhiều lựa chọn. Nếu bạn có người dùng gõ từ mà không chỉ ra các câu trả lời có thể có trong danh sách, việc bot chọn ra các từ đúng trong câu hỏi / câu trả lời sẽ trở nên khó khăn hơn nhiều.
TheEmirOfGroofunkistan

5

Tôi đã có kết quả tốt đáng kinh ngạc với trường "Để trống trường này:". Bots dường như điền vào tất cả mọi thứ, đặc biệt nếu bạn đặt tên cho trường như "URL". Kết hợp với kiểm tra giới thiệu nghiêm ngặt, tôi chưa có bot nào vượt qua được.

Xin đừng quên khả năng tiếp cận ở đây. Captchas nổi tiếng là không thể sử dụng cho nhiều người sử dụng trình đọc màn hình. Các bài toán đơn giản, hoặc những câu đố rất nhỏ (tôi thích câu hỏi "màu gì là bầu trời") thân thiện hơn nhiều với người dùng khiếm thị.


5

Văn bản đơn giản âm thanh tuyệt vời. Mua chuộc cộng đồng để làm việc! Nếu bạn tin, như tôi làm, rằng các điểm đại diện SO đo lường cam kết của người dùng để giúp trang web thành công, việc cung cấp các điểm danh tiếng để giúp bảo vệ trang web khỏi những kẻ gửi thư rác là hoàn toàn hợp lý.

Cung cấp +10 danh tiếng cho mỗi đóng góp của một câu hỏi đơn giản và một bộ câu trả lời đúng. Câu hỏi nên cách xa một cách thích hợp (chỉnh sửa khoảng cách) từ tất cả các câu hỏi hiện có và danh tiếng (và câu hỏi) sẽ dần biến mất nếu mọi người không thể trả lời nó. Giả sử nếu tỷ lệ thất bại cho câu trả lời đúng là hơn 20%, thì người gửi sẽ mất một điểm danh tiếng cho mỗi câu trả lời sai, tối đa là 15. Vì vậy, nếu bạn gửi một câu hỏi không hay, bạn sẽ nhận được +10 ngay bây giờ nhưng cuối cùng bạn sẽ ròng -5. Hoặc có thể có ý nghĩa khi yêu cầu một mẫu người dùng bỏ phiếu về việc câu hỏi captcha có tốt không.

Cuối cùng, giống như giới hạn đại diện hàng ngày, giả sử không có người dùng nào có thể kiếm được hơn 100 danh tiếng bằng cách gửi câu hỏi captcha. Đây là một hạn chế hợp lý đối với trọng số được đưa ra cho những đóng góp như vậy và nó cũng có thể giúp ngăn những kẻ gửi thư rác gieo câu hỏi vào hệ thống. Ví dụ: bạn có thể chọn các câu hỏi không có xác suất bằng nhau nhưng với xác suất tỷ lệ thuận với danh tiếng của người gửi. Jon Skeet, xin vui lòng không gửi bất kỳ câu hỏi :-)


5

Tạo một truy vấn AJAX cho một mật mã không mã hóa đến máy chủ. Máy chủ gửi lại phản hồi JSON có chứa nonce và cũng đặt cookie chứa giá trị nonce. Tính toán hàm băm SHA1 của nonce trong JavaScript, sao chép giá trị vào trường ẩn. Khi người dùng gửi biểu mẫu, bây giờ họ sẽ gửi lại cookie với giá trị nonce. Tính toán hàm băm SHA1 của nonce từ cookie, so sánh với giá trị trong trường ẩn và xác minh rằng bạn đã tạo ra số nonce đó trong 15 phút qua (memcached là tốt cho việc này). Nếu tất cả những kiểm tra vượt qua, gửi bình luận.

Kỹ thuật này yêu cầu người gửi thư rác ngồi xuống và tìm hiểu chuyện gì đang xảy ra và một khi họ thực hiện, họ vẫn phải loại bỏ nhiều yêu cầu và duy trì trạng thái cookie để nhận xét. Thêm vào đó, họ chỉ nhìn thấy Set-Cookietiêu đề nếu họ phân tích cú pháp và thực thi JavaScript ở vị trí đầu tiên và thực hiện yêu cầu AJAX. Điều này là rất xa, nhiều công việc hơn nhiều so với hầu hết những người gửi thư rác sẵn sàng trải qua, đặc biệt là vì công việc chỉ áp dụng cho một trang web duy nhất. Nhược điểm lớn nhất là bất kỳ ai tắt JavaScript hoặc tắt cookie đều bị đánh dấu là spam tiềm năng. Điều đó có nghĩa là hàng đợi điều độ vẫn là một ý tưởng tốt.

Về lý thuyết, điều này có thể đủ điều kiện là bảo mật thông qua che khuất, nhưng trong thực tế, nó là tuyệt vời.

Tôi chưa bao giờ thấy một người gửi thư rác nỗ lực phá vỡ kỹ thuật này, mặc dù có thể cứ sau vài tháng tôi lại nhận được một mục spam theo chủ đề được nhập bằng tay, và điều đó thật kỳ lạ.


5

1) Người giải quyết

Tất cả các giải pháp được đề cập ở đây được phá vỡ bằng cách tiếp cận người giải quyết. Một spambot chuyên nghiệp giữ hàng trăm kết nối và khi không thể tự giải quyết CAPTCHA, nó sẽ chuyển ảnh chụp màn hình cho người giải quyết từ xa.

Tôi thường đọc rằng những người giải quyết CAPTCHA của con người vi phạm luật. Vâng, điều này được viết bởi những người không biết ngành công nghiệp (spam) này hoạt động như thế nào.
Người giải quyết con người không tương tác trực tiếp với các trang web CAPTCHA mà họ giải quyết. Họ thậm chí không biết CAPTCHA đã được lấy từ đâu và gửi chúng. Tôi biết về hàng chục (nếu không phải hàng trăm) công ty hoặc / và các trang web cung cấp dịch vụ giải quyết con người nhưng không phải là một công ty duy nhất để tương tác trực tiếp với các bảng bị phá vỡ.
Điều thứ hai không vi phạm bất kỳ luật nào, vì vậy việc giải quyết CAPTCHA là hoàn toàn hợp pháp (và đã đăng ký chính thức) các công ty kinh doanh. Họ không có ý định tội phạm và có thể, ví dụ, đã được sử dụng để thử nghiệm từ xa, điều tra, chứng minh khái niệm, nguyên mẫu, v.v.

2) Spam dựa trên ngữ cảnh

Các bot AI (Trí tuệ nhân tạo) xác định bối cảnh và duy trì các cuộc đối thoại nhạy cảm theo ngữ cảnh tại các thời điểm khác nhau từ các địa chỉ IP khác nhau (của các quốc gia khác nhau). Ngay cả các tác giả của blog thường không hiểu rằng các bình luận là từ bot. Tôi sẽ không đi sâu vào nhiều chi tiết, nhưng, ví dụ, các bot có thể webscrape các cuộc đối thoại của con người, lưu trữ chúng trong cơ sở dữ liệu và sau đó chỉ cần sử dụng lại chúng (cụm từ theo cụm từ), vì vậy chúng không thể bị phát hiện là spam bởi phần mềm hoặc thậm chí là con người.

Câu trả lời được bình chọn nhiều nhất :

  • * "Lý thuyết là:
    • Một bot spam sẽ không hỗ trợ JavaScript và sẽ gửi những gì nó thấy
    • Nếu bot hỗ trợ JavaScript, nó sẽ gửi biểu mẫu ngay lập tức
    • Người bình luận ít nhất đã đọc một số trang trước khi đăng "*

cũng như câu trả lời honeypot và hầu hết các câu trả lời trong chủ đề này chỉ đơn giản là sai.
Tôi dám khẳng định họ là những cách tiếp cận nạn nhân

Hầu hết các spam hoạt động thông qua các trình duyệt nhận biết javascript (được vá và quản lý) từ các IP khác nhau (của các quốc gia khác nhau) và họ khá thông minh để tránh bẫy mật ong và chậu mật ong.

Vấn đề khác là ngay cả chủ sở hữu blog cũng không thể thường xuyên phát hiện các bình luận là từ bot vì chúng thực sự là từ các hộp thoại và bình luận của con người được thu thập từ các bảng web khác (diễn đàn, bình luận blog, v.v.)

3) Phương pháp tiếp cận mới về mặt khái niệm

Xin lỗi, tôi đã loại bỏ phần này như một kết tủa


1
Bạn đã phác thảo vấn đề với hầu hết mọi câu trả lời trên chủ đề này. Tất cả họ sẽ bị đánh bại nhanh chóng nếu họ không độc quyền với trang web nhỏ. Nếu bất kỳ trong số chúng được sử dụng trên một trang web lớn hoặc một số trang web nhỏ (giả sử như một plugin Wordpress), chúng sẽ bị đánh bại trong một ngày. Họ thực sự không CAPTCHAS, nhưng các trường hợp may mắn về bảo mật thông qua che khuất. Bạn cũng đúng; thư rác hiện đại đang đưa ra những bình luận mà thậm chí tôi không thể nhận ra đó là thư rác. Tôi đã từ bỏ CAPTCHA và thay vào đó sử dụng Mollom. Thư rác đám đông là một cách tiếp cận tốt hơn imho.
Dan

5

Trên thực tế nó có thể là một ý tưởng để có một bộ captcha liên quan đến lập trình. Ví dụ:

mã ngẫu nhiên

Có khả năng ai đó xây dựng trình kiểm tra cú pháp để bỏ qua việc này nhưng việc bỏ qua một hình ảnh xác thực sẽ tốn nhiều công sức hơn. Bạn có ý tưởng có một captcha liên quan mặc dù.


5
Ngoại trừ: Bạn có biết rằng câu trả lời cho câu hỏi ví dụ (trong trường hợp ai đó tình cờ gặp vấn đề này sau đó và hình ảnh không có ở đó: "Có bao nhiêu lỗi cú pháp PHP trong $var == array(1 = 'one');;") 1không 3? (Nghiêm túc. Hãy thử $var == array(1 => 'one');;) ^ _ ~
Pinkgothic

Heh, nó đã đủ dài để tôi không nhớ tạo ra hình ảnh đó. Tất nhiên, bạn đúng, và tôi không nghĩ rằng điều này sẽ rất tốt khi là một hình ảnh xác thực - nhưng có thể là một yêu cầu đầu vào cho một diễn đàn lập trình.
Ross

4

Tôi phải thừa nhận rằng tôi không có kinh nghiệm chiến đấu với spam bots và không thực sự biết chúng tinh vi đến mức nào. Điều đó nói rằng, tôi không thấy bất cứ điều gì trong bài viết jQuery không thể hoàn thành hoàn toàn trên máy chủ.

Để viết lại tóm tắt từ bài viết jQuery:

  1. Khi tạo biểu mẫu liên hệ trên máy chủ ...
  2. Lấy thời gian hiện tại.
  3. Kết hợp dấu thời gian đó, cộng với một từ bí mật và tạo 'băm' 32 ký tự và lưu trữ dưới dạng cookie trên trình duyệt của khách truy cập.
  4. Lưu dấu thời gian băm hoặc 'mã thông báo' trong thẻ biểu mẫu ẩn.
  5. Khi biểu mẫu được đăng lại, giá trị của dấu thời gian sẽ được so sánh với 'mã thông báo' 32 ký tự được lưu trữ trong cookie.
  6. Nếu thông tin không khớp hoặc bị thiếu hoặc nếu dấu thời gian quá cũ, hãy dừng thực thi yêu cầu ...

Một tùy chọn khác, nếu bạn muốn sử dụng CAPTCHA hình ảnh truyền thống mà không cần chi phí tạo chúng theo mọi yêu cầu là tạo trước chúng ngoại tuyến. Sau đó, bạn chỉ cần chọn ngẫu nhiên một để hiển thị với mỗi hình thức.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.