Ngăn chặn các bot độc hại đăng spam


15

Tôi nhớ một trang web bị đóng do sử dụng sai và tôi tự hỏi liệu bot có một phần của nó không. Nếu bot đang gửi một cái gì đó lên trang web của tôi, những cách tôi có thể chống lại nó là gì? Tôi đã nghĩ đến việc đặt một số cookie và thay đổi cookie thông qua JavaScript + dấu thời gian và ký (vì vậy cookie của ngày hôm qua không thể được sử dụng hôm nay và tuần tới).

Tôi chắc chắn rằng hầu hết mọi người / bot sẽ chỉ sử dụng một trang web khác thay vì bật JavaScript trong bot của họ.

Tôi có thể làm gì nữa? Tôi đang suy nghĩ giới hạn POST hàng ngày và honeypot cho các bot thông thường chỉ đăng ngẫu nhiên thư rác.

Câu trả lời:


13

Bạn có thể làm một số việc bao gồm:

  1. Đặt một lĩnh vực giả mà chỉ bot sẽ nhìn thấy. Sau đó, nếu trường đó được gửi cùng với phần còn lại của biểu mẫu, bạn có thể bỏ qua nó (và cấm chúng nếu muốn). Bạn cũng có thể bẫy các bot xấu theo một liên kết ẩn .

  2. Sử dụng CAPTCHA như reCAPTCHA

  3. Sử dụng một trường yêu cầu người dùng trả lời một câu hỏi như 5 + 3. Bất kỳ con người nào cũng có thể trả lời nhưng bot sẽ không biết phải làm gì vì đó là các trường tự động điền vào tên trường. Vì vậy, trường đó sẽ không chính xác hoặc bị thiếu trong trường hợp đệ trình sẽ bị từ chối.

  4. Sử dụng mã thông báo và đặt nó vào một phiên và cũng thêm nó vào biểu mẫu. Nếu mã thông báo không được gửi cùng với biểu mẫu hoặc không khớp thì nó sẽ tự động và có thể bị bỏ qua.

  5. Tìm kiếm đệ trình lặp đi lặp lại từ cùng một địa chỉ IP. Nếu biểu mẫu của bạn không nhận được quá nhiều yêu cầu nhưng đột nhiên có thể nó đang bị bot tấn công và bạn nên xem xét tạm thời chặn địa chỉ IP.

  6. Sử dụng Askimet . Nó là tuyệt vời trong việc xác định thư rác.


5
+1 - Và, lý tưởng nhất là bạn sẽ triển khai kết hợp các đề xuất được liệt kê ở trên theo cách thân thiện với người dùng (ví dụ: nếu người dùng bị tắt Javascript và do đó không thể xác thực dựa trên Javascript, hãy trình bày cho người dùng bằng CAPTCHA)
danlefree

6

John Conde phác thảo rất nhiều cách tiếp cận tốt. Vấn đề với việc chọn một kỹ thuật chống bot / chống thư rác là cân bằng giữa hiệu quả và sự tiện lợi. Sẽ rất bất tiện khi phải điền CAPTCHA mỗi khi bạn muốn đăng bình luận hoặc tin nhắn, nhưng nếu bạn chỉ yêu cầu CAPTCHA khi đăng ký, thì đôi khi điều đó không ngăn cản những kẻ gửi thư rác.

Một số kỹ thuật thụ động là một lựa chọn tốt, vì chúng không yêu cầu bất kỳ hành động nào của con người. Vấn đề là các bot ngày càng tinh vi hơn và nếu các bot có thể giải được CAPTCHA, thì chúng chắc chắn có thể xử lý JS và CSS. Vì vậy, bạn sẽ cần phải thực hiện một chút khéo léo, chẳng hạn như sử dụng CSS ít rõ ràng hơn để ẩn các trường bẫy bot của bạn.

Nhưng dựa trên câu hỏi của bạn, tôi nghĩ rằng bạn có thể nhận ra rằng vấn đề không phải là tạo ra một trang web chống bot, mà chỉ để tạo ra đủ sức răn đe mà người dùng bot sẽ đơn giản chọn các mục tiêu dễ dàng khác. Vì vậy, những gì được yêu cầu ở đây sẽ thay đổi từ trang này sang trang khác, và có thể sẽ yêu cầu một số thử nghiệm và thử nghiệm lỗi. Tôi sẽ thử các kỹ thuật ít gây khó chịu đầu tiên.

Cuối cùng, một cách khác để bạn có thể khử spam trang web của mình là sử dụng kiểm duyệt ngang hàng để xóa bất kỳ nhận xét nào do bot gửi hoặc spam được gửi thủ công lướt qua.


bạn có thể giải thích ý tưởng của kiểm duyệt ngang hàng? Điều đó có liên quan đến người dùng bình thường nhận được quyền của người điều hành hay làm thế nào để tôi phải tưởng tượng nó?
0xC0000022L

@STATUS_ACCESS_DENIED: xin lỗi vì trả lời trễ, nhưng kiểm duyệt ngang hàng về cơ bản là một cái gì đó như digg, slashdot, stackexchange, v.v., nơi người dùng có thể kiểm duyệt nội dung trên trang web bằng cách đưa ra một số hình thức phản hồi tích cực hoặc tiêu cực. Vì vậy, bạn có thể tự động hóa hệ thống sao cho khi đủ người dùng phản hồi tiêu cực về một phần nội dung, nó sẽ tự động bị ẩn hoặc gắn cờ để xem xét. Trên các trang web như StackExchange, người dùng cũng có thể gắn cờ nhận xét / câu trả lời là spam, đưa nó đến sự chú ý của quản trị viên. Điều này làm giảm công việc mà quản trị viên phải trả tiền phải làm.
Lèse majesté

cảm ơn. Tất nhiên, điều này sẽ chỉ hoạt động trên các trang web có lưu lượng truy cập cao, nơi đủ người dùng có thể bị làm phiền để đưa ra phản hồi;)
0xC0000022L

1

Như John Conde đã đề cập trong mục số 1 của anh ấy và bạn đã đề cập, honeypot có thể hoạt động rất tốt trong hầu hết các trường hợp và hầu hết các trang web. Nếu nó được thực hiện bởi bot, bạn có thể thực hiện một trong những phương pháp khác mà John đã đề cập. Nhưng thành thật mà nói nếu trang web của bạn có lưu lượng truy cập thấp hoặc trung bình thì điều này nên thực hiện.

Ví dụ, một trong những mục yêu thích của tôi:

<form action="/process-form">
<input name="email" placeholder="Enter Your Email">
<input name="email_address" placeholder="Enter Your Email" style="display:none;">
<input type="submit" value="Submit"></form>

Bây giờ khi biểu mẫu được gửi, một tỷ lệ rất cao các bot sẽ điền vào cả "email" và "email_address" nhưng con người sẽ chỉ điền vào cái họ nhìn thấy, "email" chứ không phải "email_address". Vì vậy, trong mã `/ process-form 'của bạn, bạn chỉ cần kiểm tra xem email_address có (không) để xác minh hay không.

Đơn giản và hiệu quả.

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.