Một điều bạn nên biết về những kẻ gửi thư rác là họ luôn luôn đi cho trái cây treo thấp. Cùng với tin tặc. Bằng cách này, tôi có nghĩa là họ sẽ chọn dễ dàng nhất để đạt được mục tiêu ảnh hưởng đến hầu hết người dùng. Đây là lý do tại sao lỗ hổng PHP và Windows thường bị khai thác: chúng ảnh hưởng đến rất nhiều người dùng nếu bạn thấy điểm yếu/khai thác "thị trường" mục tiêu của bạn là rất lớn.
Nó cũng là một phần lớn lý do tại sao Linux và Mac OS vẫn tương đối không bị ảnh hưởng bởi vi rút ví dụ: thị trường mục tiêu là nhiều hơn nhỏ hơn Windows. Bây giờ tôi không cân bằng tính bảo mật và mạnh mẽ của Windows với Mac/Linux nhưng mặc dù mô hình bảo mật của hai cái sau tốt hơn nhiều so với số lượng các cuộc tấn công trước đây vẫn không cân xứng với những thiếu sót mà nó có.
Tôi nói điều này vì một trong những cách tốt nhất để tránh những loại vấn đề này là không sử dụng softare phổ biến. Ví dụ, phpBB đã có rất nhiều cuộc tấn công chống lại nó chỉ vì nó rất phổ biến.
Vì vậy, bằng cách thực hiện hệ thống trò chuyện/diễn đàn của riêng bạn, bạn sẽ gặp phải bất lợi vì bạn có một hệ thống không có thử nghiệm thực địa phổ biến nhưng bạn cũng có lợi thế thời gian của người gửi spam để khai thác nó. Vì vậy, những gì bạn cần xem ra là những gì hệ thống tự động có thể làm chống lại bạn. Biểu mẫu liên hệ trên trang web có xu hướng có các điểm đánh dấu dễ nhận biết (như tên, email và các trường nhận xét).
Vì vậy, tôi sẽ tư vấn cho:
- Bỏ qua câu trả lời mà đi trong vòng 5-10 giây nói gửi dưới hình thức cho người sử dụng;
- Sử dụng honeypot (các trường ẩn CSS/JS như được mô tả ở nơi khác);
- Sử dụng Javascript khi áp dụng để hiển thị, sắp xếp lại hoặc hiển thị biểu mẫu;
- Sử dụng tên trường biểu mẫu không thể dự đoán được; và
- Phản hồi xấu của bướm ga bằng IP.
Để làm rõ, các trường nhập "ẩn" phải được ẩn bởi CSS (biểu định kiểu, không phải kiểu nội tuyến) hoặc, tốt hơn, javascript (mặc dù chỉ khi javascript đã là một phần cần thiết của trang web của bạn). Làm 'kiểu đầu vào = ẩn' sẽ không đi theo bất kỳ bot nào. – ChssPly76
Chỉ để tham khảo, kỹ thuật này được gọi là honeypot. – cletus
Tôi cũng không đánh lừa bot. Bạn có thể dễ dàng sử dụng JS để kiểm tra xem một trường có bị ẩn hay không (ngay cả khi nó bị ẩn bởi CSS). Bên cạnh đó bạn giả định rằng tất cả các trường sẽ được điền bởi các bot, do đó, điều này không bảo vệ bạn khỏi các bot chỉ lấp đầy một số trường. – RaYell