Wird das Kennwort nicht mit der PasswordBox.Password-Eigenschaft angegeben?

8

Das msdn Dokumentation auf PasswordBox.Password sagt:

  

Wenn Sie den Kennworteigenschaftswert erhalten, legen Sie das Kennwort als Nur-Text im Speicher offen. Um dieses potenzielle Sicherheitsrisiko zu vermeiden, verwenden Sie die SecurePassword-Eigenschaft, um das Kennwort als SecureString abzurufen.

Also sende ich SecurePassword an mein Ansichtsmodell in PasswordChanged event und erwarte, dass alles sicher ist, aber wenn ich meine Anwendung mit Snoop überprüfe, sehe ich in der PasswordBox Password Eigenschaft das Passwort, das ich im Klartext eingegeben habe. Wird damit der ganze Zweck der Verwendung von SecurePassword nicht zunichte gemacht? Gibt es noch etwas, das ich hier tun sollte, um die Passwörter zu schützen?

    
Andikki 24.09.2015, 00:16
quelle

1 Antwort

5

Das ist meine bescheidene Meinung.

Snoop injiziert seinen Code in laufende Anwendung. Also, es ist im Grunde ein Hacker-Tool. Ein sehr einfach zu bedienendes Hacker-Tool, das nur mit Ihrer GUI funktioniert. Aus diesem Grund ist die einfache Änderung der Sichtbarkeit eines Elements, um einige Daten vor dem Benutzer zu verbergen, eine schlechte Sicherheitsabfrage. Alles über Einschränkungen, Zugriff und Sicherheit sollte nicht auf der UI-Ebene behandelt werden. Es gibt Möglichkeiten auf Wie Snoop Ihre wpf-Anwendung zu überprüfen? aber hauptsächlich Punkt der Antworten dort ist, dass Sie Ihre Anwendung in der Weise entwerfen müssen, die es Snoop nicht erlaubt, irgendetwas zu verletzen. Validieren Sie zum Beispiel alles auf dem Server.

Zurück zu Ihrer Frage:

Es gibt zwei Szenarien. Die erste ist: Benutzer erstellt ein Passwort. Ich glaube, dies ist kein Problem, wenn die Malware eines Benutzers oder Benutzers das Kennwort in diesem Moment sehen wird. Dann erhalten und speichern Sie eine gesicherte Zeichenfolge. Und das Passwort des Benutzers löschen.

Zweites Szenario: Sie zeigen dem Benutzer ein gespeichertes Passwort an. Der Trick ist - Sie zeigen es nicht an. Sie kennen die Länge eines Passworts, so dass Sie nur das deaktivierte Textfeld mit **** anzeigen können. Und wenn ein Benutzer ein Passwort ändern möchte - geben Sie ihm aktuelle Passwortboxen, die er mit altem Passwort und neuem Passwort füllen muss und wir sind zurück zu Szenario # 1.

Der Silberstreifen ist:

Wenn ein Benutzer ein Passwort eingibt, ist es keine große Sache, dass es im Klartext irgendwo in einem Speicher liegt, da ein Benutzer weiß, was er eingegeben hat und Malware die gedrückten Tasten verfolgen kann.

Nachdem Sie das Passwort gespeichert haben

Update: Dies ist ein Quellcode für die Passwort-Eigenschaft einer Passwort-Box

%Vor%

Ich vermute also, was MSDN sagt, ist, dass wenn Sie die Password-Eigenschaft aufrufen, indem Sie sie in Code aufrufen (oder während des Debuggen in VS anzeigen, oder Snoop anzeigen), sie get-Methode aufrufen, die SecuredString entschlüsselt einfacher Text, was ihn der Erinnerung aussetzt. Wenn Sie die Password -Eigenschaft nicht aufrufen und sie nicht durch Überprüfung in Softwaretools aufrufen, wird das Passwort nicht im Klartext angezeigt.

    
netaholic 24.09.2015 10:59
quelle

Tags und Links