2017-10-05 2 views
1

Ich schreibe ein c-Programm und muss mich in eine MySQL-Datenbank anmelden. Ich versuche eine einfache und sichere Möglichkeit zu finden, den Benutzernamen und das Passwort im Programm zu speichern. Das Programm wird https Aufrufe an den MySQL-Server vornehmen. Ich muss nur in der Lage sein, die Benutzer/Passwort-Daten aufzunehmen, und ich möchte es nicht als String im Programm speichern.Login zu MySQL programmgesteuert

Wer weiß einen einfachen, aber sicheren Weg, dies zu tun?

Dies ist auf einem Linux-System. Raspberry Pi Debian (Jessie).

+0

Sie verwenden also nicht die MySQL C-API, sondern Web-Anfragen an einige Webserver, auf denen sich die Datenbank befindet? –

+0

Was passiert, wenn Login und Passwort als Argumente des Programms (in 'argv []') angegeben werden? –

+0

Der Fragetitel stimmt nicht mit der tatsächlichen Frage überein, Sie sollten einen besseren finden. Hier geht es darum, Anmeldeinformationen sicher zu speichern. Der typische Ansatz besteht darin, sie in einer Konfigurationsdatei mit eingeschränktem Zugriff zu speichern. –

Antwort

0

Sie sollten keinen Benutzernamen/Passwort in Ihre Binärdatei schreiben, da es sehr unflexibel ist und Sie neigen dazu, nicht ändern Sie dieses Kennwort regelmäßig, wenn Sie die Binärdatei jedes Mal neu kompilieren müssen. Darüber hinaus sind Binärdateien in der Regel nicht speziell lesegeschützt, sodass andere Benutzer Ihr Kennwort möglicherweise erhalten.

Die Weitergabe der Anmeldeinformationen als Programmargumente ist ebenfalls eine schlechte Idee, da sie möglicherweise in einer Prozessliste angezeigt wird, in Befehlszeilenhistorien gespeichert werden kann, von Auditing-Tools usw. protokolliert werden kann an mehreren Stellen landen, die nicht angezeigt werden sollen.

Ihre beste Option besteht darin, eine Konfigurationsdatei mit den Anmeldeinformationen zu verwenden und ihr die minimalen Rechte zu geben, die sie benötigt, damit Ihre Anmeldeinformationen sicher sind. Eine einfache Bibliothek für Linux ist zum Beispiel libini, die Ihnen erlaubt, Schlüssel/Wert-Paare in Abschnitten zu speichern, aber es gibt viele andere Optionen. Eine andere ziemlich sichere Option, die beispielsweise von Apache für private Schlüsselpassphrasen und ähnliches verwendet wird, besteht darin, ein Programm (normalerweise ein Shell-Skript) anzugeben, das ausgeführt wird und die Anmeldeinformationen auf stdout ausgibt, die dann von analysiert wird dein Programm. Auch hier müssen Sie sicherstellen, dass nur autorisierte Benutzer/Prozesse dieses Skript lesen oder ausführen dürfen.

+0

Vielen Dank. Ja angenommen. Ich habe beschlossen, eine Konfigurationsdatei zu verwenden und die Anmeldeinformationen in der Datei zu verschlüsseln. Ich hatte gehofft, dass es einige standardmäßige, einfache und einfach zu verwendende Techniken in Standard-c gibt, die mit dieser Art von Dingen umgehen würden. Es gibt wirklich nicht. Aber ich habe einige ziemlich einfache Verschlüsselungstools gefunden, die auf openssl basieren, um mir zu helfen. – mikekehrli