Ich möchte in der Fußzeile der E-Mails, die mein Dienst sendet, einen Link zum Abbestellen "Abbestellen" bereitstellen.
Offensichtlich scannen viele Spam-Scanner E-Mails und folgen den in den E-Mails enthaltenen Links, um deren Inhalt auf Malware zu scannen. Eine Problemumgehung, die ich bisher verwendet habe:
- Wenn die Seite "Abbestellen" über HTTP GET angefordert wird, werden ein einfaches Bestätigungsformular und ein bisschen JS gerendert, das das Formular beim Laden der Seite sendet
- Wenn die Seite "Abbestellen" über HTTP POST angefordert wird, melden wir den Benutzer ab
Auf diese Weise benötigt der Benutzer normalerweise nur einen einzigen Klick auf das Formular und erhält die Meldung "Sie wurden abgemeldet". Wenn JS deaktiviert ist, können sie das Bestätigungsformular weiterhin manuell senden.
Das Problem ist nun, dass einige Scanner wie die ATP von Office365 die Seiten öffnen und JS darin ausführen . Durch Ausführen von JS senden sie das Formular und veranlassen den Benutzer, sich automatisch abzumelden.
Ich habe überlegt, der JS-Logik für die automatische Übermittlung Überprüfungen hinzuzufügen:
- Nicht automatisch für bestimmte Benutzeragenten senden
- Nicht automatisch für bestimmte Client-IP-Bereiche senden
- Lösen Sie das Ereignis zum automatischen Senden bei Mausbewegung aus
Aber all dies scheinen spröde Methoden zu sein, bestenfalls Hacks, die brechen müssen, wenn E-Mail-Scanner ihre Taktik ändern.
Ich bin sicher, dieses Problem hat viele Leute vor mir gebissen. Gibt es bekannte vernünftige Problemumgehungen, abgesehen davon, dass Sie nur die Single-Click-Funktionalität aufgeben?
PS. Ich habe Unterstützung für RFC 8058 hinzugefügt, aber Benutzer werden weiterhin auf Links in der Fußzeile klicken.
quelle
Antworten:
Dies ist ein Thema der laufenden Debatte bei M³AAWG (Arbeitsgruppe Messaging, Malware und Mobile Anti-Abuse). Es ist ein Chaos und es gibt keine einfachen Lösungen. Es hört sich so an, als würden Sie alles richtig machen, aber einige Anti-Spam-Systeme sind etwas zu aggressiv.
Das große Problem ist, dass alles, was Sie tun können, auch von einem missbräuchlichen Vermarkter oder Spammer getan werden kann.
Der beste Vorschlag, den ich gehört habe, ist, einen Timer für die Aktion zu setzen. Fügen Sie ein Captcha für Benutzer hinzu, die sich innerhalb von 5 Minuten nach Lieferung abmelden, und entfernen Sie das Captcha anschließend. (Do nicht implementieren diese für Ihre RFC 8058 List-Unsubscribe-Post - Link.)
Mein nächster Lieblingsvorschlag ist, der Nachricht einen kanarischen Link hinzuzufügen. Dies sollte für menschliche Leser unsichtbar sein. Wenn dies befolgt wird, werden die letzten Klickaktivitäten von dieser IP zurückgesetzt und die IP für einige Zeit von Aktionsauslösern ausgeschlossen.
Ich mag auch Ihre Ideen. Stellen Sie einfach sicher, dass der Benutzer nach Deaktivieren von Javascript nach einem Klick auf die Bestätigungsschaltfläche das Abonnement weiterhin abbestellen kann.
Ein Teil von mir (Warnung, ich bin ein Anti-Spam-Forscher) möchte diese Fehlalarme. Hoffentlich lehrt das meine Kollegen, dass sie so einen schlechten Job machen und dass diese Eskalationen immer wieder zu ihnen kommen. Aus Ihrer Sicht können Sie das Geld weitergeben (obwohl Sie dabei einige Abonnenten verlieren werden).
Spam-Erkennungssysteme müssen vorsichtig sein, um Links zur Abonnementverwaltung zu vermeiden (zumindest bis die bösen Jungs anfangen, ihre Nutzdaten als Links ohne Abonnement zu tarnen).
quelle