2012-03-24 8 views
2

Ich erstelle eine einfache Journal App. Ich möchte, dass der Benutzer ein benutzerdefiniertes Start-Passwort festlegen kann.Best Practice zum Schutz von Windows Form mit einem Passwort/Journal-App mit Passwortschutz)?

Aber was ist die beste Praxis? Wo kann ich das Passwort sicher speichern? Und ich denke, es ist am besten, einen Hash des Passworts zu speichern - wie geht das?

Speichern des Passworts (oder Hash) in einer leicht lesbaren XML-Datei kann nicht die beste Option sein? Man kann dann einfach die XML-Datei öffnen und den Hash-String löschen, dann gibt es bei App-Load kein Passwort, oder?

Mit freundlichen Grüßen

+0

Warum möchten Sie ein Startpasswort? Das Passwort, das die Journaldatei schützt, klingt nach einer besseren Idee. Als Passwort, das die Journaldatei schützt, meine ich die Verschlüsselung mit einem Schlüssel, der mit PBKDF2 aus dem Passwort abgeleitet wurde. – CodesInChaos

Antwort

0

Ja, Passwörter Hashing ist die beste Option. In den meisten Fällen spielt es keine Rolle, wo Sie das Passwort speichern, solange Sie dem Benutzer eine Möglichkeit zum Abrufen geben. Beim Start erstellt der Benutzer beispielsweise sein Journal, sodass ein Kennwort für den Benutzer, den sie eingeben, erstellt/gehashed wird. Sie müssen auch andere Informationen wie den Mädchennamen der Mutter, das erste Haustier usw. (etwas, das der Benutzer wissen wird) fragen.

Auch wenn jemand den Hash löscht, ist das Journal gesperrt und Sie sollten den Benutzer nicht einfach nach einem neuen fragen. Der Benutzer kann nicht einsteigen, wenn er keine anderen Informationen verifiziert.

Sie können auch Schlüssel verwenden, die der Benutzer an anderer Stelle sicher speichern kann (z. B. eine Datei auf einem USB-Laufwerk). Sie können sogar noch weiter gehen und die Datenbank selbst verschlüsseln.

Viele Möglichkeiten, dies zu tun, aber keine Voll-Beweis.

2

Gehen wir dieses Problem mit dem Wunsch an, Ihr Tagebuch zu lesen. Ihr Ansatz zu Hashes ist nicht schlecht, aber nehmen Sie an, Sie definieren ein Startpasswort und speichern den Hash in einer XML-Datei in das Passwort. Was hält mich davon ab, Ihre App zu disassemblieren (was besonders einfach ist, wenn wir C# oder eine JIT-ed-Sprache in Erwägung ziehen) und nur das Passwort-Überprüfungs-Unterprogramm so zu ändern, dass es immer true zurückgibt?

Was Sie brauchen, ist die Verschlüsselung der eigentlichen Zeitschrift/Seiten. Sehen Sie die answer to this SO question für eine vollständige Rutine, die Ihre Zeitschrift Seite Mangels, so dass es sicher ist, im Klartext speichern, und sehr schwer ohne das Passwort zu erhalten.

Sie können den Hash auch optional speichern und seine Gültigkeit für den Benutzer überprüfen. da das tatsächliche Passwort immer noch benötigt wird, um jede Journalseite zu öffnen.

EDIT

Diese SO answer ist noch besser. Beide Versionen verwenden die RijndaelManaged class, die Teil von .NET Framework für die Verschlüsselung und Entschlüsselung ist.

Verwandte Themen