Security Issue - Newsletter Bestätigungsmail mit Zahlencode
Guma
- php
0 Dieter Raber
Hallo, noch jemand wach?
Ich habe meinen Newsletter jetzt fertigbekommen. Wie schon erwähnt nutze ich die Double Opt In Methode um sicherzustellen, dass die eingegebene E-Mail nur bestätigt in den Verteiler aufgenommen wird.
So jetzt habe ich ne Frage zur Sicherheit vor Betrug und Spam:
In der Bestätigungs mail habe ich einen Link, der geklickt werden muss um sich entgültig in den Verteiler einzutragen. Sieht so aus:
http://www.meineseitexyz.de/nlok.php?mail=mailadresse@meinhost.de
Diese Art der Bestätigung ist meiner Meinung nach noch zu einfach zu umgehen. Ich melde 100 Adressen an und bestaetige diese im Link (ohne die Bestaetigungs-Mails auch zu öffenen).
Abhilfe habe ich mir so vorgestellt:
Ich nutze einen zahlencode zur Bestaetigung, den nicht jeder so einfach knackt. Z.B. habe ich in der Datenbank das Feld timestamp, das ich nutzen könnte. Idee: timestamp + eine zahl /3 , dann das ganze runden und beim abgleich prüfen.
Warum ich keine zahl generieren lasse und diese in einem extra feld abspeichern will. ich brauche diese zahl ja nur einmal bei der bestätigung, danach liegt diese zahl rum und wird nicht mehr genutzt, auch nicht bei der löschung, den das geht ja bekanntlich durch die eingabe der e-mail im jeweiligen formular.
habt ihr einen bessren vorschlag und wie würdet ihr das lösen. stimmt es, dass die bestaetigung per email kinderkram ist und besser nicht genutzt wird, da einfach nachvollziehbar...
lasst es mich wissen. gute nacht wünscht guma.
Hallo Guma,
Warum ich keine zahl generieren lasse und diese in einem extra feld abspeichern will. ich brauche diese zahl ja nur einmal bei der bestätigung, danach liegt diese zahl rum und wird nicht mehr genutzt, auch nicht bei der löschung, den das geht ja bekanntlich durch die eingabe der e-mail im jeweiligen formular.
Und, was macht das, das Feld stoert doch nicht weiter?
Mach einfach von der Emailadresse einen md5-Hash, speichere den in der Tabelle und aendere deine Bestaetigungsquery auf WHERE email_md5 = dein Get-Parameter.
Gruß,
Dieter
ja guten abend,
Mach einfach von der Emailadresse einen md5-Hash, speichere den in der Tabelle und aendere deine Bestaetigungsquery auf WHERE email_md5 = dein Get-Parameter.
Das kann ich machen, nur dann habe ich ein extra feld mit dem wert drin. oder meintest du die email als MD5-Hash abspeichern?
Guma
Hallo guma,
Das kann ich machen, nur dann habe ich ein extra feld mit dem wert drin. oder meintest du die email als MD5-Hash abspeichern?
Nein, ich meine, wenn du eine Extrainformation, in dem Fall den Hash brauchst, benutzt du auch ein Extrafeld. Es ist ja nicht so, dass deine SQL-Abfragen dadurch dramatisch langsamer wuerden, oder die Speichergroesse ins unendliche wachsen wuerde. Die Adresse selbst in md5 abzuspeichern, bringt nix, weil du diesen nicht mehr in die Adresse zurueckverwandeln kannst.
Gruß,
Dieter
Servus,
Mach einfach von der Emailadresse einen md5-Hash
Den Hash allein aus der E-Mail-Adresse zu generieren ist Unfug. Den kann schließlich jeder erstellen, dem die jeweiligen E-Mail-Adressen vorliegen, und kommt somit letztendlich aufs selbe raus, wie die E-Mail-Adresse wie in Gumas erstem Beispiel anzuhängen.
Sinnvoller wäre, den Hash aus der E-Mail-Adresse plus einem "Salt" (einem zufaellig erzeugten String) zu erstellen.
Gruss
Patrick