[PHP] E-Mail bestätigung

Hallo,

hat von euch zufällig schon was fertiges da?

Falls nicht wäre der Ansatz so richtig?

-E-Mail wird in DB gespeichert. Insert-ID wird zurückgeliefert und zusammen mit rand und der E-Mail Adresse ein MD5 hash erzeugt
-Es wird eine E-mail gesendet wo der Link drin ist in dem Format: mail_confirm.php?u=[insert_id]&h=[md5 hash]

Gibst es sonst noch was zu beachten?

Hi,

ich würds selber schreiben geht doch schnell 10 Minunten dann sollte man es haben :wink:
Ich würde es so machen md5(email + id)

Bei mir hab ichs so gemacht das ich einfach nen timestamp nimm und den in der datenbank abspeicher und dann wenn email und timestamp übereinstimmt wird der account oder was auch immer aktiviert

lg flo

da nen Timestamp relativ schwer genau zu erraten ist [size=85](mehrmals versuchen ist natürlich ne Möglichkeit^^)[/size] und man den sowieso benötigt, da ja die Registration iwann ablaufen sollte, ist das ne Möglichkeit.
ID im Hash ist sowieso schwer zu erraten^^ Würd halt iwelche nicht so öffentlichen Sachen rein packen und fertig. Eventuell noch bis zu 2000x hashen so das auch das nicht einfach jedem bekannt ist :smiley: [size=85](1000x md5() geht eigl. in null Komma nix)[/size]

Wirst schon nen Weg finden oder nimmst halt etwas fertiges.

Wäre es nicht sinnvoller den Hash zusätzlich zu salzen? (Wer will denn schon gegen das Kerckhoffs’sche Prinzip verstoßen? :wink:)

Möglich wäre das zwar, jedoch halte ich es für eine simple Bestätigung als überflüssig. Man muss ja nicht gleich mit Kanonen auf Spatzen schießen. Ich verwende seit Jahren einen Hash aus Timestamp, E-Mailadresse, ID und einem möglichst sinnlosen Satz - und das funktioniert toll.

Wäre das hier nicht sowieso irrelevant, es sei denn er würde ein öffentliches CMS bauen, da Besucher weder auf die PHP-Quelltext noch auf die Datenbank Zugriff haben sollten? Und daher weiß ja niemand wie und mit was man verschlüsselt…

Ich verschlüssle meist email, dann zum hash noch timestamp dazu und dann wieder oder so…Sollte für ne Webseite im kleinen bis mittleren Bereich reichen…

Das läuft ja auch auf eine Art gesalzenen Hash hinaus. Ich halte nur das wiederholte Hashen für sinnlos, zumindest wüsste ich nicht das es irgendwas bringt (Quelle?), außer Security through Obscurity, welches man aber vermeiden sollte.
Sicherlich kann man im kleinen Maßstab abwägen, was Sicherheit und Effizienz angeht, aber ich für meinen Teil mache das halt lieber etwas penibler als vielleicht nötig wäre :slight_smile:

Naja, ich denke mir halt dass viele sicher nur einmal mit md5() hashen, weil es mitunder das bekannteste zu sein scheint…und wenn man der Masse nicht angehört ist das schonmal gut. Aber es ist sicherlich interessant sich darüber auszutauschen.

Hi,

:p ich mach nicht mal md5 … xD einfach email adresse rückwärts xD und timestamp (des ding zu erraten is bissal schwer würde ich mal sagen)

lg flo

Dann ist das Schema aber sichtbar - ein Hash ist immer gleichlang, und nimmt nur ein paar zeichen mehr Code in Anspruch

Hi,

ja klar aber das war damal meine erste selbst geschriebene community und dann war des schon recht gut fürn anfang und jetz … mein gott dann sollen sie halt nen fake account aufmachen wenn ichs mitbekomme dann wird er halt gesperrt … außerdem glaub ich auch nicht das jemand versucht den timestamp zu erraten (also damit mein ich diese secunden anzahl seit unix oder so … mir fällt grad nicht der richtige name ein )
und jetz nachzubessern ist mir erlich gesagt fast etwas zu viel arbeit (ja ich weiß ich bin faul) XD

lg flo

Ich bin Perfektionist :smiley:

$code = $timestamp.‚ich fresse Licht‘.$username.‚Deine Mutter‘.$ident;

So muss das :ps:

mehrmals nen md5 erstellen, hat ganz einfach den Grund, das es so “Sicher” ist. md5 ist anfällig für Rainbow Attacken size=85[/size] und das ganze mehrfach hashen schützt. Außerdem haben viele Seiten nen einfachen md5 Hash, daher haste einen haste alle^^ [size=85](also kannst dich auf Seiten einloggen etc… in dem Fall ist nicht so relevant, aber wenn man es immer richtig macht, muss man net extra drauf achten)[/size]

Ich habs jetzt selber gemacht
$email_conf_hash$DB->escape(md5(rand().$email.$join_date));

Statt rand() würde ich lieber mt_rand() nehmen, weil “besser” und vorallem schneller ist.

Wie sieht’s eigentlich mit Hash-Algorithmen aus, die neuer sind als MD5? Ich benutz für meine Skripte schon länger SHA-1 und für’s nächste Projekt ist SHA-256 vorgesehen. Benutzt ihr alle noch MD5?

ich nutz md5^^ Ganz einfach weils gut für Pwd’s geeignet ist [size=85](im Sinne von oft genutzt und es sieht besser aus :smiley:)[/size], schnell ist [size=85](ok bei 1000x Aufrufen auch net unbedingt besser als 1-10x SHA-1 xD)[/size] und eben überall dafür ne Implementation vorhanden ist weshalb auch externe Zugriffe gehen etc. [size=85](ok SHA-1 sollte es theoretisch auch so gut wie überall geben… dennoch)[/size]

Aus ähnlichen Gründen nutz ich auch nen simplen crc32 als Checksum bei nicht so wichtigen Sachen da dieser eben simple und schnell ist. Wenns wichtiger ist eben noch nen md5 obendrauf :smiley: size=85[/size]

1000000 random numbers generated in 0.16791605949402 seconds using rand()
1000000 random numbers generated in 0.18266987800598 seconds using mt_rand()

soo viel langsamer ist rand ja nicht. Und die Verteilung ist bei dem zweck ja egal.

Bei neuen Scripten verwende ich inzwischen SHA1. Aber bei so Sachen wie nem Mail Bestätigungs-Hash bleibe ich bei MD5 wegen den paar Zeichen weniger

1000000 hash generated in 0.79327917098999 seconds using md5()
1000000 hash generated in 0.96450519561768 seconds using sha1()

Bei dem Ergebnis könnte man drüber streiten, ob’s nicht nur an dem Rechner liegt auf dem das ausgeführt wird, aber viermal schneller, wie in der PHP-Dokumentation beschrieben, sieht anders aus…

Bleibt noch die bessere Verteilung, die bei unserem Problem aber vernachlässigbar ist.

Man könnte die Zeichenkette ja auch noch weiter kürzen in dem man nur jedes zweite Zeichen übernimmt, schwer zu erraten wäre das auch noch alle mal :slight_smile:

am besten macht’s euch ne tabelle mit der hand und für jeden user denkt ihr euch einen eigenen hash aus xD

@maxxchen: wenn du nicht dazuschreibst wieviel durchläufe es waren hat das gar nix zu sagen

@Morpheus

steht doch dabei