Wie Password in C# hinterlegen?
Ich frage mich schon lange, wie ich am besten ein Password in einem C# Programm hinterlegten kann. Es handelt sich um MySQL Verbindungsdaten, welche ich SICHER im Programm hinterlegen will. Wie mache ich sowas am besten?
3 Antworten
Indem du die Daten zum Beispiel in einer Datei verschlüsselst und sie mit einem Passwort im Programm entschlüsselst.
Die Daten kannst du als XML oder JSON formatieren, verschlüsseln und dann speichern und beim Laden entschlüsselst du und deserialisierst dann.
Zum Verschlüsseln kannst du z.B. RSA nehmen.
Encrypting data | Microsoft Docs
Das empfiehlt sich aber auch nur, wenn du das unbedingt so tun musst... Am Ende des Tages brauchst du das wahrscheinlich sowieso nicht.
„Sie können einen Teil der Verbindungszeichenfolge in einer Konfigurationsdatei speichern und zur Vervollständigung zur Laufzeit die DbConnectionStringBuilder-Klasse verwenden. Diese Vorgehensweise empfiehlt sich in Szenarien, in denen Ihnen die Elemente der Verbindungszeichenfolge vorab nicht bekannt sind oder wenn Sie sicherheitsrelevante Informationen nicht in einer Konfigurationsdatei speichern möchten. Weitere Informationen finden Sie in Connection String Builders (Verbindungszeichenfolgengeneratoren).“
-Microsoft
Wie mache ich sowas am besten?
Am besten gar nicht.
Zugangsdaten kannst du via Umgebungsvariablen, Startargumente oder Konfigurationsdateien dem Programm mitgeben. Hat dann auch den Vorteil, dass du ganz einfach mehrere Umgebungen starten kannst.
Na aus deiner ursprünglichen Frage kann man nicht rauslesen, was das genau für eine Applikation ist.
Du musst etwas dazwischenhauen, einen Webservice. Der Webservice läuft unter deiner Kontrolle und hat Zugriff auf die Datenbank. Die Clients kommunizieren lediglich mit dem Webservice. Die User können sich dort zum Beispiel mit einem eigenen Konto anmelden. Die Aktionen der Nutzer kannst du somit viel besser kontrollieren und regulieren.
Aber um die Datei zu entschlüsseln brauche ich ja auch ein password... Und somit ist da das nächste Passeord was irgendwie sicher imer Progrsmm hinterlegt werden muss😅