2008-09-03 29 views
12

Bạn biết cơ chế nào ngăn trang web của bạn bị những kẻ gửi spam ẩn danh lạm dụng.Bạn là con người? (hoặc Cách ngăn chặn spam)

Ví dụ: giả sử tôi có một trang web nơi mọi người có thể bỏ phiếu cho một cái gì đó. Nhưng tôi không muốn một người nào đó spam tất cả mọi thứ từ đầu đến cuối. Vì vậy, tôi đã tìm thấy (a) tạo một tài khoản và chỉ được phép bỏ phiếu một lần và (b) CAPTCHA để giảm spam. Bạn biết những phương pháp nào khác và chúng hoạt động tốt như thế nào?

Trả lời

13

Điều quan trọng tôi nhận thấy là bất cứ điều gì bạn làm, bạn muốn hệ thống của bạn trở nên độc đáo. Bạn muốn kẻ tấn công phải điều chỉnh chương trình tự động hóa của họ cho trang web cụ thể của bạn, thay vì chỉ ném một tập lệnh đã tồn tại trước đó vào nó, nó sẽ hoạt động gần như ở mọi nơi. Nó thậm chí không cần phải được bảo mật về mặt mã hóa; nó chỉ làm cho trang web của bạn hơi khác so với tiêu chuẩn.

Điều này không có nghĩa là bạn không thể hoặc không nên sử dụng thứ gì đó như tiện ích con đã được tạo sẵn. Tuyệt đối sử dụng một trong số đó như một điểm nhìn chằm chằm! Nó chỉ có nghĩa là bạn phải tùy chỉnh nó ở đâu đó để một cái gì đó thêm xảy ra đó là ngoài tiêu chuẩn và sẽ phá vỡ bất kỳ kịch bản có sẵn mà bình thường có thể đánh bại nó.

Nếu trang web của bạn đủ lớn để bạn có kẻ tấn công nhắm mục tiêu cụ thể, thì tùy chỉnh đơn giản của bạn có thể sẽ không giữ được nữa và bạn có thể làm điều gì đó đặc biệt hơn và suy nghĩ về mật mã thực và mọi thứ. Nhưng đó là một trong những điều đó là một vấn đề "tốt".

0

stackoverflow có một vài tính năng giúp với điều này; Tôi nghĩ rằng bước hữu ích nhất mà bạn có thể thực hiện là vô hiệu hóa khả năng người dùng ẩn danh và tài khoản mới bỏ phiếu. Bằng cách này, không ai có thể đăng ký hàng trăm tài khoản và sử dụng một phiếu bầu của họ để chế ngự người dùng khác. Tôi muốn nói rằng yêu cầu một vài bài viết hoặc thành viên trong một khoảng thời gian nhất định là cả hai lựa chọn tốt. Một số người nói rằng bạn có thể cho phép một phiếu bầu cho mỗi địa chỉ IP để giúp giải quyết vấn đề này, nhưng tôi đã chơi nhiều trò chơi mà người dùng độc hại có số lượng proxy không xác định cao đã thách thức bảo mật dựa trên địa chỉ IP. Đó là một rào cản, nhưng một người dùng hiểu biết sẽ dễ dàng tìm thấy nó.

2

Tính phí cho phiếu bầu, giống như họ thực hiện trên một số chương trình truyền hình "tài năng" và bị gửi spam tất cả các cách tới ngân hàng!

Nghiêm túc, đây là một vấn đề thực sự khó khăn, và một ngày nào đó (có thể sớm, nếu bạn nghe Ray Kurzweil), máy tính sẽ làm thử nghiệm để sàng lọc con người. Các câu trả lời tôi thêm vào danh sách có những hạn chế rõ ràng, nhưng chỉ vì lợi ích của điều tra: kiểm duyệt (có con người làm thử nghiệm), và theo dõi dựa trên IP (giới hạn số phiếu bầu từ một máy chủ).

+0

American Idol không tính phí cho phiếu bầu. – jimyi

+0

Chuột, tôi đoán tôi không thể sử dụng nó như một cái cớ để ngăn con tôi bỏ phiếu. Sẽ cập nhật câu trả lời của tôi! – erickson

+0

@jimyi: Công ty điện thoại mà bạn gửi phiếu bầu dựa trên tin nhắn văn bản của bạn. –

4
  • Giới hạn số phiếu biểu quyết cho mỗi địa chỉ IP mỗi lần
  • Khối ẩn danh proxy.
  • Để bỏ phiếu: Làm cách nào để xáo trộn giá trị phải được biểu mẫu trả về trên cơ sở "mỗi phiên". Khi "1" có nghĩa là mục đầu tiên, "2" có nghĩa là mục thứ hai. Sau đó, "77" có nghĩa là mục đầu tiên, "812" có nghĩa là thứ hai, ... có thể là một số toán học đơn giản đằng sau hiện trường, nhưng nó ngăn người dùng chỉ gửi cùng một truy vấn HTTP nhiều lần.
  • Điều gì làm việc cho tôi rất tốt: Sử dụng biểu mẫu AJAX, không phải biểu mẫu HTTP đơn giản. Về mặt kỹ thuật, việc bỏ phiếu giả không phức tạp hơn nhiều, nhưng tôi đã viết một phần mềm blog đơn giản và chỉ có cơ chế bảo vệ SPAM là gửi các nhận xét qua AJAX - không có SPAM cho đến nay.
0

Tôi thường sử dụng kết hợp cả hai: người dùng an toàn là tự do duyệt tất cả mọi thứ, nhưng nếu muốn bỏ phiếu, thì anh ấy phải đăng ký.

Trong quá trình đăng ký, tùy thuộc vào tình huống, tôi sử dụng một optin qua mail (để hoàn tất đăng ký và xác nhận rằng ít nhất hộp thư tồn tại) và/hoặc CAPTCHA.

Từ thời điểm đó, bạn có thể quyết định xem người dùng có thể vonte nhiều lần hoặc bất kỳ quy tắc nào khác không.

Btw Tôi không phải là fan của các ràng buộc dựa trên IP: có rất nhiều tình huống trong đó mạng của tổ chức lớn sử dụng ít IP cho tất cả người dùng của họ, vì vậy nguy cơ chặn người dùng có thể bỏ phiếu là cao.

6
+2

Viết chương trình máy tính để đánh bại điều đó sẽ gây khó chịu, nhưng không phải là khó. Hầu hết các vấn đề mà mọi thứ tạo ra đều được giải quyết bằng các máy tính thông minh. – Brian

9

Đối với một hệ thống CAPTCHA, tôi chân thành khuyên reCAPTCHA.

CAPTCHA truyền thống do máy tính tạo sẽ eventually be broken bằng cách phát triển một hệ thống đủ thông minh. Ví dụ: here's someone người tuyên bố phá vỡ Google CAPTCHA, trước đây được coi là không thể phá vỡ, với tỷ lệ lần truy cập là 30%. reCAPTCHA, theo định nghĩa, chỉ hiển thị cho bạn những hình ảnh không thể nhận dạng bằng nhận dạng ký tự quang học.

Và đồng thời, nỗ lực của người dùng sẽ được hướng tới mục tiêu chung - chúng giúp số hóa sách bằng cách nhận dạng các từ không thể nhận dạng tự động.

Xem here để được giải thích thêm và dùng thử.

4

Tôi là người hâm mộ của "trường ẩn" CAPTCHA. Tôi không nhớ nơi tôi đọc về nó, nhưng ý tưởng là thế này:

  • tạo biểu mẫu như bình thường
  • thêm một lĩnh vực phụ trợ nhưng giấu nó (tức là style="display:none" trên div xung quanh hoặc dòng của bảng)
  • sau khi gửi, nếu trường trống, hãy thực hiện hành động thích hợp (ví dụ: gửi email); nếu trường này đã được điền vào, thì đó là trình con robot

Trường hợp này rơi xuống nếu trình duyệt của người dùng không xử lý CSS (hoặc đã tắt), điều này rất hiếm.

+0

Giải pháp của tôi là một chút như thế này: Tôi sử dụng javascript để ẩn trường nhập và đặt giá trị của nó. nếu không có javascript, tôi yêu cầu khách truy cập nhập một giá trị không tầm thường trong đó. nếu javascript, nó là tự động. Sau đó, tôi thực hiện một phía máy chủ thử nghiệm đơn giản. – Aif

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