Ich habe ein wenig Code, der mit erhöhten Rechten ausgeführt werden muss (mehr, als dass der Rest meines Codes ausgeführt werden soll).
Ich habe meinen Code, mit dem der Identitätswechsel funktioniert, erfordert aber einen Benutzernamen, eine Domain und ein Passwort. Da mein Code in C # .net ist, weiß ich, dass das Passwort von jedem bestimmt genug gefunden werden kann.
Gibt es eine Möglichkeit, das Passwort in meinem Code zu verschlüsseln? Oder sichern Sie dieses Passwort und können es trotzdem weitergeben?
Hier ist der Code, den ich anrufe:
%Vor%Ich würde ein Beispiel lieben, das zeigt, wie ich dies beheben kann, um mein Passwort nicht im Klartext anzuzeigen.
Ich verwende Visual Studio 2008, .NET 3.5 SP1 und läuft unter Windows Server 2003.
Sie haben nicht angegeben, ob dies eine Desktop- oder Web-App war, also ...
ASP.NET 2.0 unterstützt das Verschlüsseln von Abschnitten von web.config.
Vaccano,
Ich würde empfehlen, die Datenschutz-API (DPAPI) auf das zu untersuchen, was Sie erreichen wollen. Es wird als Teil der Lösung in vielen Best-Practice-Ansätzen zum reversiblen Speichern von Kennwörtern betrachtet, die von Anwendungen benötigt werden.
Ein guter Artikel über die DPAPI (und andere Techniken + Bedenken) finden Sie hier:
Mit C # 2.0 ist P / Invoking nicht einmal erforderlich; Verwaltete Wrapper existieren:
Ich hoffe, das hilft!
Sie haben hier mehrere Optionen.
Sie können das Passwort das erste Mal hashen und den Hash in einer Datei speichern. Wenn Sie das nächste Mal den Code mit erhöhten Rechten ausführen möchten, müssen Sie das Kennwort akzeptieren / erneut eingeben und den Hash erneut berechnen und mit dem gespeicherten Hashwert abgleichen. Nur wenn es übereinstimmt, führen Sie Ihren Code in den Höhenmodi aus. Du könntest mit SHA hashen. Informationen zum Hashing finden Sie im System.Crytography-Namespace.
Die zweite Möglichkeit besteht darin, das Passwort mit Algorithmen wie AES zu verschlüsseln. Sie müssen jedoch einen Schlüssel dafür haben, und Sie müssen sich um die Sicherung dieses Schlüssels kümmern.
Die dritte Option besteht darin, DPAPI zu verwenden und das Passwort zu verschlüsseln, ohne sich um die Sicherung der Schlüssel zu kümmern - viel einfacher als 2.
Ich würde 1 empfehlen, wenn es Ihnen nichts ausmacht, das Passwort jedes Mal neu einzugeben, wenn die Anwendung startet. Wenn das keine Möglichkeit ist, würde ich vorschlagen, mit 3 zu gehen und DPAPI zu verwenden.
Hier sind einige Links, um Sie zu starten.
Sie können das Paket safe-config nuget verwenden. Intern verwendet es Datenschutz-API zum Verschlüsseln und Entschlüsseln von Daten.
%Vor%Tags und Links c# security visual-studio-2008