Я хотів би надати посилання "Скасувати підписку" одним натисканням кнопки в нижньому колонтитулі електронних листів, які надсилає моя служба.
Очевидно, що багато сканерів спаму скануватимуть електронні листи та перейдуть за будь-якими посиланнями, знайденими в електронних листах, щоб сканувати їх вміст на наявність шкідливих програм. Я досі використовував вирішення:
- Якщо на сторінку "Скасувати підписку" запитується через HTTP GET, вона надає просту форму підтвердження та трохи JS, що подає форму при завантаженні сторінки
- Якщо на сторінку "Скасувати підписку" запитується через HTTP POST, ми скасовуємо підписку на користувача
Таким чином, користувачеві, як правило, потрібен лише один клік по формі, і він отримає повідомлення "Ви відписалися". Якщо у них відключений JS, вони все ще можуть вручну надіслати форму підтвердження.
Тепер проблема полягає в тому, що деякі сканери, такі як ATP Office365, відкриють сторінки та виконують JS всередині них . Виконуючи JS, вони надсилають форму і викликають автоматичну підписку на користувача.
Я розглядав можливість додавання чеків до логіки автоматичного подання JS:
- не надсилайте автоматично для конкретних користувачів-агентів
- не надсилайте автоматично певні діапазони IP-адрес клієнта
- запустити автоматичне подання події переміщення миші
Але все це здається крихкими методами, хакери в кращому випадку неминуче порушуються, коли сканери електронної пошти змінюють свою тактику.
Я впевнений, що ця проблема попередила багатьох людей до мене. Чи відомі обґрунтовані шляхи вирішення, окрім того, щоб просто відмовитися від функціонування одним клацанням?
PS. Я додав підтримку RFC 8058, але користувачі все ще збираються натискати посилання в нижньому колонтитулі.