Wie? Benutzerkennwörter in ASP.NET verschlüsseln und entschlüsseln

8

Wir erstellen eine neue Site mit dem ASP.NET-Mitgliedschaftsanbieter für die Benutzerregistrierung und die Anmeldung. Unser altes System hat Benutzerkennwörter verschlüsselt, damit wir sie bei Bedarf wiederherstellen konnten.

Ich habe große Schwierigkeiten herauszufinden, ob es möglich ist, ASP.NET-Mitgliedschaftsfunktionen zu verwenden, um einfach das Passwort zu verschlüsseln, wenn der Benutzer sich registriert und es dann entschlüsselt, damit ich es sehen kann.

Dokumentation dafür ist wiehern nicht existent.

Ich weiß, wie man Web.config so konfiguriert, dass es Passwörter als verschlüsselte Ala speichert passwordFormat="Encrypted" im Provider und Zuweisung eines ValidationKeys im MachineKey, jedoch scheint es, als ob das Passwort noch gehashed wird (obwohl es vielleicht nur gut verschlüsselt ist). Wie auch immer, ich kann nicht entscheiden, wie das Passwort bei Bedarf wiederhergestellt werden kann (von uns).

Danke!

    
smdrager 10.06.2010, 18:26
quelle

4 Antworten

10

Das Speichern von Kennwörtern im wiederherstellbaren Format ist eine sehr schlechte Idee. Wenn Sie sie wiederherstellen können, so kann jeder, der in Ihren Server einbricht.

Es ist besser, einen Standard-Hash + Salt-Ansatz zu verwenden und einen Mechanismus zum Zurücksetzen des Kennworts zu verwenden, um den Fall zu behandeln, in dem Benutzer ihr Kennwort vergessen.

    
frankodwyer 10.06.2010, 18:37
quelle
5

Sie müssen passwordFormat="Verschlüsselt" anstelle von passwortFormat="Hashed" verwenden. Dann können Sie die DecryptPassword-Methode der Mitgliedschaftsanbieter , um das Passwort bei Bedarf zu entschlüsseln.

    
John Bledsoe 10.06.2010 18:32
quelle
1
%Vor%     
The Modulator 30.11.2011 13:13
quelle
0

Ich nehme an, dass Sie den SQLMembershipProvider verwenden, den MS bereitstellt. Wenn ja, warum nicht die integrierte Frage- und Antwortfunktion verwenden, damit der Benutzer sein Passwort zurücksetzen kann. Alternativ (oder zusätzlich) setzen Sie ihr Passwort für sie zurück und mailen Sie das neue an sie. Auf diese Weise kann Ihre App das Kennwort eines Benutzers nicht versehentlich ausliefern.

Wenn Sie wirklich ihre Passwörter entschlüsseln müssen, muss das PasswortFormat auf "Verschlüsselt" gesetzt werden. Informationen zum Entschlüsseln des Kennworts finden Sie unter DecryptPassword . Weitere Informationen zum Konfigurieren der Entschlüsselung finden Sie im PasswordFormat . Beachten Sie, dass es besagt, dass Sie das decryptionKey-Attribut des machineKey-Elements angeben müssen.

    
Ken Henderson 10.06.2010 18:37
quelle