Không có một biện pháp đơn lẻ nào đủ — xếp nhiều lớp, mỗi lớp làm chi phí của bot tăng lên.
Lớp chặn trước khi tạo tài khoản:
- Rate limit theo IP và theo subnet, ví dụ 5 lượt đăng ký/IP/giờ. Bot dùng proxy xoay IP nên đây chỉ là lớp đầu.
- Honeypot: một input ẩn bằng CSS; người thật không điền, bot điền tự động thì loại luôn. Rẻ và không phiền user.
- CAPTCHA có điều kiện: chỉ bật khi tín hiệu bất thường (nhiều lượt cùng IP, user-agent lạ, điền form quá nhanh), tránh làm phiền toàn bộ user thật.
Lớp xác minh danh tính:
- Tài khoản mới ở trạng thái chưa kích hoạt cho tới khi xác thực email hoặc OTP số điện thoại. Tài khoản chưa xác thực không được đăng bài, gửi tin nhắn, hay tiêu tài nguyên tính tiền.
- Chuẩn hoá email trước khi so trùng: a.b+spam@gmail.com và ab@gmail.com là một hộp thư ở Gmail. Chặn danh sách domain email dùng một lần.
Lớp dọn dẹp: job xoá tài khoản chưa xác thực quá 7 ngày, và dashboard theo dõi tỉ lệ đăng ký/kích hoạt để phát hiện đợt tấn công mới.
Lưu ý khi trả lời: không trả về thông báo khác nhau giữa "email đã tồn tại" và "email chưa có" ở form đăng ký công khai, vì đó là kênh dò danh sách user.