2012-05-23 28 views
6

Tôi đang xem xét sử dụng phương án thay thế cho Captcha (hoặc Recaptcha) cho biểu mẫu đăng ký trên trang web mà tôi đang thực hiện.Thực hiện spambots trực tiếp POST tới máy chủ hoặc điền vào biểu mẫu HTML?

Tôi tin rằng ảnh hưởng tiêu cực của Captcha ảnh hưởng đến UX. Tôi đã nhìn vào sử dụng trường dữ liệu ẩn nhưng dường như họ không có hiệu quả ở tất cả (tham khảo: http://radio.javaranch.com/davo/2008/10/15/1224063498569.html)

Một bình luận trên rằng các quốc gia Bài chi tiết:

Như ai đó mà viết bánh CAPTCHA như một phần của công việc của tôi (không, không phải vì gửi thư rác), tôi có thể đảm bảo với bạn rằng một trường ẩn sẽ không có cách nào để thoát khỏi chuyến đi tôi. Như một áp phích khác được đề cập, tôi kiểm tra lưu lượng truy cập qua dây, và không chú ý nhiều đến những gì xảy ra trong HTML của biểu mẫu .

Điều này khiến tôi tin rằng spambots gửi yêu cầu POST trực tiếp đến máy chủ, thay vì yêu cầu biểu mẫu và điền vào.

Nếu trường hợp đó xảy ra, tôi phải làm gì nếu tạo trường bị ẩn, chỉ đọc mà tôi điền trước bằng băm được lưu trong SESSION. Khi người dùng gửi biểu mẫu, tôi có thể so sánh các giá trị. Liệu công việc này có phải là cách để tránh xa spambots hay tôi đang giám sát điều gì đó?

Nếu biểu mẫu không bao giờ được yêu cầu, tôi, tất nhiên, sẽ không tìm thấy bất kỳ mã băm nào được lưu trữ trong phiên và do đó có thể bỏ qua yêu cầu.

+3

Bạn đang thực hiện ít nhất ba giả định ở đây mà bạn nên xem xét lại: 1. Đó là tất cả các bánh quy CAPTCHA sử dụng cùng một kỹ thuật; 2. Bạn đã có ý tưởng rằng những người xây dựng CAPTCHA chuyên nghiệp và những người bẻ khóa họ một cách chuyên nghiệp thì không (và không thể tìm ra); 3. Trang web của bạn sẽ trở thành mục tiêu cho những người gửi spam sớm đủ để bạn dành thời gian phát triển cho điều này ngay bây giờ. Họ không, bạn đã không, và nó không phải là. –

+1

@Jordan: Tôi đồng ý rằng tôi đang đưa ra hai giả định đầu tiên. Thật không may, thứ ba không phải là một trong số họ. Tôi vẫn đang làm việc trên trang web, hoàn thành chức năng đăng ký tuần trước và đã có 3 bot rõ ràng trong cơ sở dữ liệu của tôi. – xbonez

+0

@xbonez Yêu cầu của bạn ở đây trong các ý kiến ​​khá nhiều disproves các 'niềm tin' bạn đã dẫn đến. –

Trả lời

6

Thêm trường khác có thách thức gắn với biến phiên phía máy chủ là một cách tiếp cận tốt; nó sẽ đòi hỏi nỗ lực đáng kể hơn ở phía bên của chương trình thư rác, tức là họ phải tải và phân tích biểu mẫu, điền vào biểu mẫu và thực hiện một yêu cầu khác (gửi cùng với các cookie cần thiết).

Bạn cũng có thể xem xét thêm JavaScript để sửa đổi thử thách đã cho và sửa đổi theo một cách nhất định. Kẻ tấn công sau đó sẽ cần phải tìm ra mã của bạn làm gì trước khi họ có thể tái tạo nó theo cách tự động. Biến đổi có thể đơn giản là hoạt động rot13 hoặc phức tạp hơn xor. Những thứ như md5, sha1 là các thuật toán được thiết lập để những thuật toán đó là sự lựa chọn kém; nó phải được tùy chỉnh.

Tất nhiên, nếu kẻ tấn công bị ràng buộc nhắm mục tiêu trang web của bạn, bạn sẽ không thể làm gì để ngăn spam xâm nhập; đó là sự thật xấu xí. Ví dụ: họ có thể chạy Selenium và phá vỡ tất cả tính năng bảo vệ JavaScript mà bạn đã tích hợp cẩn thận.

+1

Tôi thích ý tưởng đưa JS vào kết hợp. Khi bạn nói 'sử dụng Javascript để sửa đổi thử thách', bạn đã nghĩ gì? Một cái gì đó như, có lẽ, đảo ngược băm? – xbonez

+0

Tôi đồng ý, nói chung toàn bộ điểm của captchas, vv là để tăng công việc tính toán cho người gửi spam để spam trở nên đắt hơn. Có một số tính toán được thực hiện trong trình duyệt đi về phía mục tiêu này. – jhonkola

+0

@xbonez Tôi đã thêm một ví dụ về 'sửa đổi thách thức' trong câu trả lời –

0

Tôi sẽ nói điều đó phụ thuộc vào bot. Nếu ai đó nhắm mục tiêu trang web của bạn, điều này có thể được phá vỡ rất dễ dàng:

  1. trang Yêu cầu với hình thức và điền vào giá trị phiên
  2. Điền vào biểu mẫu và gửi đi.

Tôi cho rằng hầu như không có sự bảo vệ nào.

Đáng buồn là tôi không quá quen thuộc với trạng thái hiện tại của chương trình và cách chúng hoạt động, vì vậy đây chỉ là đầu vào của tôi về việc làm việc này dễ dàng như thế nào.

+0

Đúng là một bot nhắm vào trang web của tôi có thể phá vỡ sự bảo vệ. Một bot tiên tiến có thể phân tích CSS và nhận ra các trường ẩn. Tôi muốn giải quyết phương pháp 'hiệu quả nhất' vì 'phương pháp hoàn hảo' có lẽ không tồn tại. – xbonez

0

Spambots khác nhau sử dụng các cách khác nhau.

Nhưng linh hoạt nhất chương trình thư rác: trang 1. yêu cầu với hình thức 2. đọc những gì các lĩnh vực nó chứa yêu cầu POST 3. gửi với các lĩnh vực tìm thấy với một số giá trị điền

Bạn cann't chắc chắn, rằng tất cả các bot có thể tìm và để lại dữ liệu nhập vào "form-session-token" của bạn. Bạn không thể chắc chắn rằng tất cả các bot đều có thể sử dụng javascript (một cách khác để bảo vệ - thêm các trường bắt buộc với js). Nhưng các chương trình rất khác nhau.

2

Thật không may, tôi nghi ngờ rằng bạn đã có những người gửi spam cụ thể nhắm mục tiêu trang web của bạn. Nếu bạn đã thực hiện đăng nhập và đăng ký theo cách thủ công, có khả năng một spambot sẽ có logic có khả năng đăng ký mà không được đặc biệt phù hợp với biểu mẫu của bạn.

Các giải pháp khác là tốt, và trong khi chúng sẽ giúp đỡ, không ai trong số họ sẽ ngăn chặn ngay cả một spammer được xác định vừa phải. Rất nhiều spambots hoạt động như plugin trình duyệt, do đó, tin tưởng rằng một spambot không thể đánh giá JavaScript hoặc sẽ không gọi cho các hình thức ở nơi đầu tiên không có khả năng giúp bạn rất lâu. Ít nhất, một CAPTCHA để đăng ký (và có lẽ cho mỗi bài viết, hoặc bất kỳ trang web của bạn làm gì, cho đến khi tài khoản được chấp thuận theo cách thủ công) có lẽ sẽ là bắt buộc.

Tôi biết bạn không muốn tác động đến trải nghiệm người dùng, nhưng thư và tài khoản spam có hại hơn UX so với CAPTCHA. Cắn viên đạn và làm mọi thứ có thể để làm chậm người gửi spam xuống hoặc người dùng của bạn sẽ tìm ở nơi khác.

Được cấp, CAPTCHA không phải là giải pháp hoàn chỉnh - có phần mềm có thể giải quyết chúng (trong một số trường hợp) chính xác hơn con người. Họ, giống như ngũ cốc ăn sáng phong phú, chỉ là một phần của bữa ăn sáng hoàn chỉnh này - và không ai trong tâm trí của họ sẽ bắt đầu ngày nghỉ với SPAM. ;)

Kiểm duyệt người dùng mới có thể sẽ chứng minh là rất hữu ích.

+0

Vâng, có vẻ như tôi sẽ phải đi với thứ gì đó hung hăng hơn. Tôi đang nghĩ đến việc xác minh email. Spambots không có khả năng xác minh tài khoản, đúng không? – xbonez

+0

Xác minh email? Tất nhiên họ có khả năng đó, về tổng thể - Đó là một vấn đề tầm thường. Không phải tất cả các spam đều có thể, nhưng hãy nhớ rằng rất nhiều spam xảy ra sau khi người dùng HUMAN thiết lập tài khoản –

+1

Suy nghĩ hợp lý: nếu có một phương pháp xác minh rằng bot không thể vượt qua, MỌI NGƯỜI sẽ sử dụng nó. Sẽ không có SPAM nữa. Vì vậy, không có gì là dễ dàng. –

Các vấn đề liên quan