DrDreist Geschrieben 4. Mai 2010 Geschrieben 4. Mai 2010 Hallo Community, ich habe dieses mal eine konzeptionelle Frage. Ihr kennt das ja wenn ihr euch im Internet regestriert. In den meisten Fällen müsst, ihr dann eure Emails abrufen und dort auf einen Link klicken der irgendwie so aussehen könnte: http://www.test.com/users/activate/Te3Di!_32djaljecOE05 Der letzte Teil, ist der eigentlich entscheidende Teil. Ich hab jetzt 2 Ansätze im Blick. Der eine, ich leg eine zusätzliche Spalte in der DB an, z.B. 'verifyKey' und schreibt dort den Wert rein und gleich bei Abrufe eifnach ab. Den zweiten Ansatz, eine 2-Wege Verschlüsselung. Hab mir gerad eine zusammen gebastelt, die 2 Strings zusammenverwurschtelt und später wieder encodiert werden kann. Bsp: Zvnaks§bZ!hgfrgfrge.zpnbazaq%14,13 Array ( [0] => Max Mustermann [1] => info@test.com ) So Problem beim ersten Ansatz : Ich hab in der DB einen Wert steh den ich genau 1 mal brauch, danach ist der unbrauchbar. Nicht gerade sauber. Bei den zweiten Ansatz hab ich ein anderen Kritikpunkt. Je länger die 2 Strings sind, desto länger wird der Aktivierungskey. Auch nicht gerade optimal. Wollt jetzt mal Anfragen, ob ihr schon mal eine ähnliches Problem hattet und wie ihr es gelöst habt. Mit freundlichen Grüßen Zitieren
riot Geschrieben 4. Mai 2010 Geschrieben 4. Mai 2010 Hi, hm.. ein Aktivierungskey ist ein Wegwerfgegenstand. Warum nicht bei der Registrierung ein Flatfile anlegen, das den Namen des völlig zufällig erzeugten (aber eindeutigen) Schlüssels hat? (Der auch in Form eines Links per E-Mail verschickt wird) Regelmäßiges Housekeeping stellt sicher, dass eine Maximalanzahl von Aktivierungskeys existiert (andernfalls wird vorübergehend keine weitere Aktivierung zugelassen) und dass erzeugte Keys nach sagen wir 24 Stunden gelöscht werden. Das File enthält die E-Mail-Adresse als Inhalt oder eine sonstige User-ID, damit klar ist, wer hier aktiviert werden soll. Nach der Aktivierung wird das File gelöscht. Das hält zwar möglicherweise keinem ausdauernden Angriff stand, d.h. nach genug Rumprobiererei wird es sicher möglich sein, den ein oder anderen User zufällig zu aktivieren, das aber nicht gezielt. Ich halte es für eine pragmatische Lösung, die in den allermeisten Fällen ausreichend sein sollte. Sollte man mehr Sicherheit wünschen und die Probiererei ausschließen wollen, könnte man noch eine Flood-Control einbauen bzw. einfach dafür sorgen, dass nur ein gewisser Schwellenwert von Anfragen pro IP zugelassen wird, danach die IP für ein paar Minuten gebanned wird (und natürlich bei jedem weiteren Versuch innerhalb der Zeitspanne wieder). Dabei aber nicht vergessen, dass auch mal zwei User mit der gleichen IP aus dem gleichen Hausnetz zugreifen können. Fazit: Es ist IMHO nicht erforderlich, hierfür ein Datenbankfeld anzulegen und es ist auch nicht erforderlich, endlos lange oder kryptische Aktivierungskeys zu verwenden. (Hab zwar gerade keinen Namen im Kopf, aber es gibt ja auch diverse Tools für das erzeugen von leicht zu merkenden Passwörtern, welche ich dafür evtl. heranziehen würde). Viele Grüße, riot Zitieren
xm22 Geschrieben 18. Mai 2010 Geschrieben 18. Mai 2010 Du könntest 1. eine weitere Tabelle mit User-ID + Hash anlegen und somit Deine Userdaten sauber halten 2. Den Hash mit zu den Benutzerdaten speichern. Den könnte man bei Bedarf später noch verwenden (Allerdings fällt mir gerade kein Bsp. ein). Die Benutzerdaten durch die Gegend zu schicken (selbst Kodiert), ist keine gute Idee. Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.