Chciałbym podać linki „Anuluj subskrypcję” jednym kliknięciem w stopce wiadomości e-mail wysyłanych przez moją usługę.
Oczywiście wiele skanerów spamowych skanuje wiadomości e-mail i podąża za wszelkimi linkami znajdującymi się w wiadomościach e-mail, aby skanować ich zawartość w poszukiwaniu złośliwego oprogramowania. Obejście, z którego korzystałem do tej pory:
- Jeśli strona „Anuluj subskrypcję” jest żądana przez HTTP GET, renderuje prosty formularz potwierdzenia i trochę JS, który przesyła formularz przy ładowaniu strony
- Jeśli strona „Anuluj subskrypcję” jest żądana przez HTTP POST, anulujemy subskrypcję użytkownika
W ten sposób użytkownik będzie zwykle potrzebował tylko jednego kliknięcia w formularzu i otrzyma komunikat „Zostałeś anulowany”. Jeśli mają wyłączone JS, nadal mogą ręcznie przesłać formularz potwierdzenia.
Teraz problem polega na tym, że niektóre skanery, takie jak ATP Office365, otwierają strony i wykonują w nich JS . Wykonując JS, przesyłają formularz i powodują automatyczne anulowanie subskrypcji użytkownika.
Rozważałem dodanie czeków do logiki automatycznego przesyłania JS:
- nie przesyłaj automatycznie dla określonych programów użytkownika
- nie przesyłaj automatycznie dla określonych zakresów adresów IP klientów
- wywołać zdarzenie automatycznego przesyłania po przesunięciu myszy
Ale wszystko to wydaje się być kruchymi metodami, w najlepszym razie hackami, które zepsują się, gdy skanery poczty elektronicznej zmienią taktykę.
Jestem pewien, że ten problem ma przed sobą wiele osób. Czy istnieją znane rozsądne obejścia poza rezygnacją z funkcji pojedynczego kliknięcia?
PS. Dodałem obsługę RFC 8058, ale użytkownicy nadal będą klikać łącza w stopce.
źródło
Odpowiedzi:
Jest to temat toczącej się debaty w M³AAWG (grupa robocza ds. Przesyłania wiadomości, złośliwego oprogramowania i mobilnego zapobiegania nadużyciom). To bałagan i nie ma łatwych rozwiązań. Wygląda na to, że robisz wszystko dobrze, ale niektóre systemy antyspamowe są trochę zbyt agresywne.
Dużym problemem jest to, że wszystko, co możesz zrobić, może być również wykonane przez agresywnego sprzedawcę lub spamera.
Najlepsza propozycja, jaką słyszałem, to po prostu ustawić czas działania. Dodaj captcha dla użytkowników, którzy anulują subskrypcję w ciągu 5 minut od dostarczenia, a następnie usuń captcha. (Czy nie zaimplementować to za RFC 8058 łącza List-Wyrejestrowanie-Post).
Moją następną ulubioną propozycją jest dodanie do wiadomości linku kanaryjskiego. Powinno to być niewidoczne dla ludzkich czytelników. Jeśli zostanie zastosowane, cofnie ostatnią aktywność kliknięcia z tego adresu IP i na pewien czas zablokuje adres IP z wyzwalaczy akcji.
Podobają mi się również twoje pomysły. Upewnij się, że jeśli JavaScript jest wyłączony, użytkownik nadal może zrezygnować z subskrypcji po kliknięciu przycisku potwierdzenia.
Jest część mnie (uwaga, jestem badaczem antyspamowym), która chce tych fałszywych alarmów. Mam nadzieję, że nauczy to moich rówieśników, że wykonują tak złą robotę i że te eskalacje będą do nich przychodzić. Z twojego punktu widzenia możesz przejść do złotówki (choć w tym procesie stracisz kilku subskrybentów).
Systemy wykrywania spamu muszą uważać, aby unikać linków do zarządzania subskrypcjami (przynajmniej dopóki złoczyńcy nie zaczną ukrywać swoich ładunków jako odsyłaczy od abonamentu).
źródło