Was ist der beste Weg zur Umsetzung einer "unsubscribe" - link für Ihren newsletter?
Ich denke, dass ich schaffen Sie ein Deaktivierungs-code setzen, dass in den unsubscribe-link zusammen mit Ihrer Benutzer-id. Dann, wenn ein Empfänger meiner newsletter auf den link klickt, ich kann schauen, Ihre Benutzer-id und sehen, ob die Deaktivierung-code entspricht.
Klingt wie der beste Weg?
Was sind einige andere Möglichkeiten?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Könnte man nur verwenden eines Hash-Algorithmus zur Sicherung der Benutzer-id (so, dass keiner Registrierung alle Ihre DB mit einem fiesen loop).
Werden Sie am Ende mit zwei Parameter : Benutzer-id und hash.
Der Vorteil ist, dass Sie nicht brauchen, um zu speichern Sie eine beliebige Zuordnung zwischen den Deaktivierungs-code und Benutzer-id.
Von einem end-user-Sicht, ein-Klick-Abmeldung ist ausgezeichnet.
Jedoch mit hash(id + secret) ist unsicher, weil ein cleverer Angreifer kann sehr schnell "brute force" - das Geheimnis, dann gehen Sie zum abbestellen, die jeder Benutzer in der DB einfach durch Inkrementieren das ID.
Es ist viel sicherer, halten Sie die ID "semi-geheimes" auf dem server und verwenden Sie die e-mail-Adresse zum nachschlagen der Benutzer auf Abmelden. So, einen erfolgreichen Abmeldung erfordert die Kopplung ein E-Mail-Adresse mit der richtigen ID. Sie können diese noch sicherer durch speichern von einem wirklich geheimen Schlüssel für jeden Benutzer und verwenden, die anstelle der ID. Dies ist insbesondere erforderlich, wenn die E-Mail-ID + - Paare veröffentlicht werden.
So, zum Beispiel, Ihre Abmelde-link würde so Aussehen:
- Und eine server-seitige Funktion zum generieren $hash Aussehen würde, wie dies in PHP:
Klicken Sie dann zum abschließen der Abmeldung, die Sie lookup wird die Nutzer per E-Mail, und überprüfen Sie,
$_GET['hash'] == unsubscribeHash($user_id, $_GET['email'])
Aus der Sicht der Nutzer, nicht erfordern, dass der Nutzer zur Eingabe der e-mail-Adresse zu kündigen. Ein Ansatz, der über alle Informationen verfügt, eingebettet in den link (wie Sie beschreiben) ist viel besser.