![]() |
Homepage: Passwortrecovery -> IDEEN/TIPPS GESUCHT!!!
Hallo Leuts!
Ich hab mal eine Frage: und zwar habe ich für eine Homepage einen Login mit PHP und MySQL und Sessions erstellt. Die Tabelle sieht folgendermaßen aus:
SQL-Code:
Hier wird das Passwort verschlüsselt und der Username, sowie eine Emailadresse und der Vorname (alle unverschlüsselt) gespeichert und später mit der Abfrage (dem Login) verglichen. Bei einer Übereinstimmung wird, wird dann halt zur nächsten Seite weitergeleitet.
CREATE TABLE `members` (
`id` int(8) unsigned NOT NULL auto_increment, `username` varchar(150) character set latin1 collate latin1_german1_ci NOT NULL, `vorname` varchar(150) character set latin1 collate latin1_german1_ci NOT NULL, `password` varchar(32) character set latin1 collate latin1_german1_ci NOT NULL, `emailadresse` varchar(150) character set latin1 collate latin1_german1_ci NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM AUTO_INCREMENT=21 DEFAULT CHARSET=latin1; - Das Funzt soweit einwandfrei. Jetzt habe ich aber eine weitere Tabelle eingerichtet, aus der später das Passwort wiederhergestellt werden kann. deshalb werden die Daten in dieser Tabelle nicht verschlüsselt. Aufbau Tabelle:
SQL-Code:
Genauso wie die obere.
CREATE TABLE `members2` (
`id` int(8) unsigned NOT NULL auto_increment, `username` varchar(150) character set latin1 collate latin1_german1_ci NOT NULL, `vorname` varchar(150) character set latin1 collate latin1_german1_ci NOT NULL, `password` varchar(32) character set latin1 collate latin1_german1_ci NOT NULL, `emailadresse` varchar(150) character set latin1 collate latin1_german1_ci NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM AUTO_INCREMENT=21 DEFAULT CHARSET=latin1; So nun habe ich im moment eine recht plumpe art ein Passwort rauszusuchen: Über ein Skript schickt der unglückliche mir seine Emailadresse, seinen Benutzernamen und den Vornamen zu und ich such dann manuell das richtige Passwort heraus. So das wollte ich gerne ändern und zwar wollte ich das diese eingaben direkt auf dem Server mit der Tabelle verglichen wird und dann automatisch das richtige Passwort an den Benutzer geschickt wird (nur wenn ALLE daten übereinstimmen!). Aber da ist dann Ende im Gelände. Ich habe leider keine wirkliche Idee, wie ich dem Skript sage, das es aus den mit POST übergebenen Variablen den Benutzernamen, die Emailadresse und den VOrnamen so verarbeiten soll, das schließlich eine Email in der folgenden Form herauskommt: Zitat:
Die mit Sternchen Markierten Werte sollen mit dem Skript ausgelesen und hier eingebaut werden. Die Werte in den Eckigen Klammern sollen die Formatierungen der Textabschnitte sein: b -> Fett i -> Kursiv u -> unterstrichen Emailadressen habe ich übrigens absichtlich nicht die Original angegeben^^ So nun aber zur eigentlichen Frage: Hat jemand einen Tipp oder Vorschläge, wie ein derartiges Skript aussehen sollte? Mir würden sonst auch ähnliche Skripte helfen, die ich modifizieren könnte... Schon mal vielen Dank!! PS: Ich möchte bitte keine Kommentare hören, wie "Such mal bei Google" oda so...;-) |
Re: Homepage: Passwortrecovery -> IDEEN/TIPPS GESUCHT!!!
Hi,
wenn Du es einmal verschlüsselt und einem nicht verschlüsselst abspeicherst, kann es gleich nicht verschlüsselt abspeichern, wenn jemand an die Daten rankommt, dann sowieso an beide Tabellen. Mach es doch, wie andere auch: Wenn jemand ein neues Passwort anfordert, generiere ein neues und schicke es dem Benutzer zu. |
Re: Homepage: Passwortrecovery -> IDEEN/TIPPS GESUCHT!!!
Zitat:
|
Re: Homepage: Passwortrecovery -> IDEEN/TIPPS GESUCHT!!!
Dem schließe ich mich an. Oberste Priorität sollte die Sicherheit der Benutzerdaten haben. Ich mache es so:
Code:
Also ich gebe die Variablen, die das Passwort im Klartext enthalten auch frei, sobald ich diese nicht mehr benötige.
$passwd = request_var('r_password', '', 'p');
$passwd2 = request_var('r_password2', '', 'p'); $salt_dyn = $session->generate_salt(); $passwd_hash = $session->generate_hash($passwd, $salt_dyn, STAT_SALT); $passwd2_hash = $session->generate_hash($passwd2, $salt_dyn, STAT_SALT); unset($passwd); unset($passwd2); unset($_POST['r_password']); unset($_POST['r_password2']); |
Re: Homepage: Passwortrecovery -> IDEEN/TIPPS GESUCHT!!!
Du könntest folgendes (meiner Meinung nach sehr intelligentes) Verfahren anwenden:
Wenn der Benutzer sein PW vergessen hat, kann er ein Neues anfordern. Du generiert ein zusätzliches 2. Passwort (zufällig aus 8 Buchstaben & Ziffern) und speicherst es beim User und sendest es per EMail. Zusätzlich speicherst du Datum & Uhrzeit. Das orginale PW bleibt erhalten !!! Beim Login prüfst du einfach das Hauptpasswort. Sollte dies fehlschlagen kommt das 2. Passwort ins Spiel. Allerdings darf es nicht älter als 24 Stunden sein; ist es älter, ignorierst du es. Vorteile: Passwort muss nie im Klartext gespeichert werden (ausser in der EMail) Wenn ein Scherzbold ein PW anfordert, kann der richtige User sich trotzdem anmelden, auch wenn er die EMail nicht gelesen hat. |
Re: Homepage: Passwortrecovery -> IDEEN/TIPPS GESUCHT!!!
Ich erläutere noch kurz mein Verfahren:
1. "Passwort vergessen" anklicken 2. Name + E-Mail muss eingegeben werden => Benutzer erhält eine E-Mail, in der er über einen Link bestätigen muss, dass er es ist. Daraufhin erhält er eine 2. E-Mail mit dem neu generierten Passwort. Leute, die Name + E-Mail eines Mitglieds wissen, können das Passwort somit nicht ändern. |
Re: Homepage: Passwortrecovery -> IDEEN/TIPPS GESUCHT!!!
Zitat:
Dann ist Passwort geändert und der Benutzer muss nochmal durch die ganze Prozedur. Ich denke mein Vorschlag hat den Vorteil, dass nur einmal eine Mail verschickt wird und keine weitere Aktionen nötig sind. Programmierseitig fällt auch nur ein geringer Aufwand an: 2 weitere Felder (Passwort2 & Passwort2ExpireDateTime) in der Usertabelle und eine kleine Änderung in der Loginprozedur. Allerdings sind beide Verfahren wohl wasserdicht. Und dann werfe ich noch ein drittes Verfahren in den Ring: 1. "Passwort vergessen" anklicken 2. Name + E-Mail muss eingegeben werden 3. Benutzer erhält eine EMail mit einem Link, der direkt zu einem New-Passwort-Dialog führt. Er muss zweimal sein neues PW eingeben und ist dann angemeldet. |
Re: Homepage: Passwortrecovery -> IDEEN/TIPPS GESUCHT!!!
Okay! Danke!!
Stimmt das ist unsinnig, wenn die eine geknackt wird dann auch die andere... Ich werd mal eure beiden Vorschläge ausprobieren ;-) @ Matze: eine Frage hab ich noch: Wie machst du das mit dem Aktivierungs-/Bestäigunslink und der Erkennung? |
Re: Homepage: Passwortrecovery -> IDEEN/TIPPS GESUCHT!!!
@sx2008:
Bei dem von Matze beschriebenen Verfahren wird doch auch nur eine E-Mail verschickt. Sollte irgendjemand fremdes Nickname + E-Mail-Adresse des Users wissen, und ein neues Passwort anfordern, müsste mit Klick auf den in der E-Mail enthaltenen Link erst das neu generierte, ebenfalls in der Mail enthaltene Passwort bestätigt werden. Würde der Link nicht aufgerufen, würde sich auch für den "echten" Benutzer nichts an seinem Passwort ändern. |
Re: Homepage: Passwortrecovery -> IDEEN/TIPPS GESUCHT!!!
:wiejetzt: wieso wenn ich das hier richtig lese, kriegt der User zwei emails:
Zitat:
|
Re: Homepage: Passwortrecovery -> IDEEN/TIPPS GESUCHT!!!
Jupp, das sind 2 E-Mails. Die 1. E-Mail enthält einen Link zur Anforderung des neuen Passworts. Dieser Link enthält als Parameter einen Hash, den ich zuvor in der Benutzertabelle beim jeweiligen Benutzer eingefügt habe. Anhand des Hashs kann ich den Benutzer somit identifizieren.
Wird der Link aufgerufen und ein Benutzer mit diesem Hash gefunden, bekommt dieser ein neu generiertes Passwort an seine E-Mail-Adresse geschickt. Wird die E-Mail ignoriert bzw. der Link nicht geöffnet, dann behält das ursprüngliche Passwort seine Gültigkeit. Sobald der Link in der 1. E-Mail angeklickt wurde, ist das ursprüngliche Passwort nicht mehr gültig, da es mit dem neuen überschrieben wurde. Btw: Auf meiner normalen Website ist dies übrgens (noch) nicht so gelöst. Bei meinem Wiki (neu entstanden) habe ich es so umgesetzt. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:11 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz