Passwort-Vergessen-Funktion

bmp

Newbie
Registriert
Apr. 2019
Beiträge
3
Guten Abend,

ich bin auch der Suche nach einem "roten Faden" wie ich sensible User-Daten in einer Datenbank sicher, aber auch komfortabel verschlüssle. Sensible User-Daten (Anschrift, Name, Telefon, Email, Passwort ... alles was einen identifiziert) möchte ich nicht im Klartext in der Datenbank ablegen.

Dem User möchte ich eine Passwort-Vergessen-Funktion anbieten. Per Mail wird ein Link zugeschickt, damit ein neues Passwort vergeben werden kann.

Programmiert wird mit ASP (VBScript) und einer Access-Datenbank (MDB).
Für die Verschlüsselung habe ich mir ausgesucht:
http://walter.bislins.ch/projekte/index.asp?page=Coder:+Funktionen

Es soll kein Passwort/Masterpasswort im Quellcode im Klartext abgelegt sein. Also muss sich das Masterpasswort zum Verschlüsseln aus den Login-Daten ergeben (Mail, Passwort, Hash, Salt).

Mein Verständnis-Problem ist folgendes:
Vergisst der User sein Passwort ... wie kann ich die Inhalte wieder entschlüsseln, um dann mit einem neuen Passwort erneut zu verschlüsseln?
Bei allen Überlegungen meinerseits finde ich den passwenden Datensatz nie wieder ohne das richtige Masterpasswort.

Wie geht es richtig?
Bin für jede Anregung dankbar!
VG bmp
 
1. Dieser Funktion würde ich nicht vertrauen. Welche Verschlüssslung wird verwendet usw?
2. Wie willst du einen Link verschicken, wenn die E-Mail-Adresse verschlüsselt ist?
3. Wie willst du auf das korrekte Passwort prüfen, wenn du nicht weist welcher User das ist, da schon der Username / Email mit dem Passwort verschlüsselt ist.
4. Speichert man Passwörter nicht verschlüsselt, sondern gehasht und prüft gegen den Hash.

Stichworte vbscript, aes, pkdf2

Du brauchst also für die E-mail ein Masterpasswort oder speicherst die E-Mail-Adresse im Klartext.

Dann weiss ich nicht ob der Username im Klartext irgendwo auftaucht. Bei einem Blog beispielsweise als Autor. Da brauchst du den auch als Klartext. Wenn du eh alles so verschlüsselst, das nur der entsprechende Benutzer selbst seine Daten mit seinem eigeben Passwort lesen kann, warum speicherst du die Daten dann.
 
Zuletzt bearbeitet:
Bis hierhin schonmal besten Dank!

zu 1.+4.:
Bin umgestiegen auf SHA256. Dass kann ich bei 1&1 mit ClassicASP ohne weitere DLL nutzen. Daher erstmal kein PKDF2.
https://github.com/as08/ClassicASP.PasswordHashing

Zu AES finde ich nur VB - kein VBScript/ClassicASP
https://docs.microsoft.com/en-us/do...escryptoserviceprovider?view=netframework-4.8
Hast Du ein Beispiel zur Verwendung (encrypt/decrypt)?

3.+4.
Sind denn sonst die personenbezogenen Daten auch immer im Klartext gespeichert?
Kontodaten z.B. sind bestimmt verschlüsselt - hoffe ich :)
Ebenso Krankheiten/Diagnosen. Eigentlich wollte ich auch Name, Anschrift, Telefon verschlüsseln. Wer weiß wer bei 1&1 intern alles Zugriff hat.
Wie wird das sonst gespeichert, damit keine Rückschlüsse auf eine Person gezogen werden können?

Von meiner Seite aus, möchte ich natürlich schon den User mal eine Nachricht schreiben, oder eine Auswertung laufen lassen. Wenn ich nicht an die verschlüsselten Inhalte herankomme, wäre das ... ungünstig.

Wie geht es richtig?
Danke nochmal
 
Also wenn du Daten anhand eines Passworts eines Benutzers verschlüsseln willst, dann brauchst du die Daten eh nicht und kannst es gleich lassen, da sie eh keiner sehen kann, außer dem Nutzer selbst natürlich. Das macht einfach keinen Sinn.

Du kannst Daten natürlich verschlüsseln, aber dann brauchst du halt ein Masterpasswort, oder ein Passwortsystem welches deterministische Passwörter je Nutzer liefert, unabhängig der variablen Nutzerdaten! Ob das dann sichererer ist muss man schauen, da man mit Zugriff auf die Daten (Server) vermutlich auch zugriff auf das Passwort(system) haben würde.

Nur wenn die Datenbank z.B. auf einem anderen Server liegt, und man mit Zugriff nur auf diesen dann ohne die Logik, welche auf einem anderen ist, nicht an die Daten kommt, dann kann es je nach Wichtigkeit/Sensibilität der Daten schon Sinn machen. Wenn Daten und Logik aber auf dem gleichen Server sind, und jemand mit Zugriff auf diesen dann so oder so an die Daten kommt, dann hilft es wenig bis gar nichts.
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: Physikbuddha
Erm, nope. So wird das nichts.

- Finger weg von ASP Classic, insbesondere mit VBScript. Alternativen gibt's genug: ASP.NET + VB wäre eine.

- Finger weg von Accessdatenbanken. Wenn irgend möglich nimm ein Datenbanksystem. An dieser Stelle, je nach Situation und Machbarkeit eventuell einen MS SQL Server; der hat den Vorteil, daß der Dialekt grundsätzlich derselbe ist.

- Ja, natürlich sind Benutzerdaten (außer PW) im Klartext gespeichert. Wie sonst soll das mit dem PW-Reset funktionieren? Wurde ja schon angemerkt.

- Je nach Zugriffslevel, den Du auf den Server hast, kannst Du Zugriffe ggfs. per Dateisystem einschränken. Wenn der Hoster drauf zugreift... dann ist das halt so; wenn Du das nicht willst, dann kannst Du nur selber hosten. Restrisiko bleibt immer. Du gehst mit dem Hoster einen Vertrag ein: entsprechend hast Du diesen und hast auch eine gewisse Vertrauensbasis, auf welcher Du den Vertrag erstmal geschlossen hast. Das "muß" reichen für "was kann der Bursch möglicherweise tun"; tut es das nicht: kündigen und wen suchen, wo dieses Vertrauen da ist oder hergestellt werden kann.

- Das Paßwort dient NUR und AUSSCHLIESSLICH der Authentifizierung. Benutzer kommt und hat das richtige PW => es ist der richtige Benutzer. Ansonsten gibt es ein "Nope" und er bleibt draußen. Simpel.

- Für ZUSÄTZLICHE Verschlüsselung kann man dann weitere Funktionalität implementieren, mit oder ohne weiterem individuellen Bezug - zB ein weiteres Paßwort -- was aber vom Anmelde-PW verschieden ist. Dann kann man auch den Benutzer informieren, daß wenn er DIESES PW vergißt, seine Daten irreversibel verloren sind. Bißchen Mitarbeit darf man von seinen Benutzern durchaus erwarten. Ganz abgesehen davon, daß es den Benutzer einen Hals interessiert, ob der Provider zugreifen kann oder nicht, wenn er gleichzeitig mehr oder weniger sicher sein kann, daß der BETREIBER jederzeit auf seine Daten zugreifen kann.
 
Zurück
Oben