Tôi muốn cung cấp một liên kết "Hủy đăng ký" bằng một cú nhấp chuột ở chân trang của email mà dịch vụ của tôi gửi.
Rõ ràng, nhiều máy quét thư rác sẽ quét email và sẽ theo bất kỳ liên kết nào được tìm thấy trong email để quét nội dung của chúng để tìm phần mềm độc hại. Một cách giải quyết tôi đã sử dụng cho đến nay:
- Nếu trang "Hủy đăng ký" được yêu cầu thông qua HTTP GET, nó sẽ hiển thị một biểu mẫu xác nhận đơn giản và một chút JS gửi biểu mẫu khi tải trang
- Nếu trang "Hủy đăng ký" được yêu cầu qua HTTP POST thì chúng tôi sẽ hủy đăng ký người dùng
Bằng cách này, người dùng thường sẽ chỉ cần một cú nhấp chuột vào biểu mẫu và họ sẽ nhận được thông báo "Bạn đã hủy đăng ký". Nếu họ đã vô hiệu hóa JS, họ vẫn có thể gửi biểu mẫu xác nhận theo cách thủ công.
Bây giờ vấn đề là, một số máy quét như ATP của Office365 sẽ mở các trang và thực thi JS bên trong chúng . Bằng cách thực thi JS, họ gửi biểu mẫu và khiến người dùng tự động hủy đăng ký.
Tôi đã xem xét việc thêm kiểm tra vào logic JS tự động gửi:
- không tự động gửi cho các tác nhân người dùng cụ thể
- không tự động gửi cho phạm vi IP khách hàng cụ thể
- kích hoạt sự kiện tự động gửi khi di chuyển chuột
Nhưng tất cả những thứ này có vẻ như là các phương pháp dễ vỡ, tốt nhất là hack, chắc chắn sẽ bị phá vỡ khi các máy quét email thay đổi chiến thuật của chúng.
Tôi chắc rằng vấn đề này có rất nhiều người trước tôi. Có cách giải quyết hợp lý đã biết, ngoài việc từ bỏ chức năng một lần bấm không?
Tái bút Tôi đã thêm hỗ trợ cho RFC 8058 nhưng người dùng vẫn sẽ nhấp vào liên kết ở chân trang.