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.
Wieso? Machste eine Nutzereingabe, die das Passwort voraussetzt?
Dann muss aber jeder Nutzer das Password kennen... Das Programm nutzen mehrere Leute (Freunde) und die sollen nicht immer ein Password eingeben...
Warum die Daten dann groß absichern? Wenn du ein Passwort hast, kannst du sie sowieso entschlüsseln.
Weil ich nicht will das Fremde an das Password gelangen...
Dir bleibt halt sonst nichts. Du kannst sonst deinen Freunden die Datei mitschicken, die als Schlüssel agiert und die Daten im Programm entschlüsselt. Aber wenn es weitergegeben wird, kommst du um eine Onlinelösung nicht mehr drum herum.
Was genau meinst du mit "Onlinelösung" ?
Zum Beispiel über einen Server. Am Schluss musst du die Infos dir über einen Server ziehen, damit sie nicht lokal bei dir sind. Sonst kriegst du sie über eine Passwortdatei bzw. Schlüssel entschlüsselt.
„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.
Stop, du willst, dass jeder Nutzer darauf Zugriff hat? Warum willst du die Daten dann schützen? Schmeiß sie doch einfach rein und gut?
Ich habe mehrere Freunde/Kollegen, die die Software nutzen sollen. Ich will aber, die Login Daten sicher im Programm hinterlegen, sodass niemand ran kommt (weder Freunde noch Fremde)
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😅