2008-12-02 22 views
10

Ich schreibe eine Reihe von datenbankgestützten Anwendungen in PHP. Diese Anwendungen werden auf einem Linux-Server als eigener Benutzer ausgeführt. Andere Benutzer sind wahrscheinlich zeitweise im System, haben jedoch einen sehr kontrollierten Zugriff. Andere Server, auf die sie überhaupt keinen Zugriff haben. Ich werde auch eine API mit eingeschränkter gespeicherter Prozedur für Entwickler offen legen, die Perl-Skripte schreiben müssen, die mit einem DBI und einer Reihe von Funktionen, die ich schreibe, auf die Datenbank zugreifen.Wie sichert man am besten eine Datenbankverbindungszeichenfolge?

Meine Frage ist, was ist der beste Weg, um die Config-Dateien, die Verbindungsstrings in ihnen haben zu sichern?

Ist ein anderer Benutzer mit [4+] 00 Berechtigungen für die Datei ausreichend? Sollte ich sie verschlüsseln? Das scheint das Problem einfach anderswohin zu verschieben, so dass ich mir Sorgen darüber mache, wo ich einen Verschlüsselungsschlüssel speichern soll. Ich weiß, dass die Perl-Entwickler eine eigene Verbindungszeichenfolge haben müssen, da sie nur Datenbankberechtigungen ausführen.

+0

ist dies eine Befehlszeilen-App oder eine Web-App? –

+0

Ich denke, es ist sicher, dass PHP == Web-Apps in über 99% der Fälle. –

+0

Es ist eine berechtigte Frage. Teile des Systems verwenden tatsächlich das CLI. –

Antwort

7

Wenn die Maschine wirklich in der traditionellen Unix-Mode verwaltet wird, wo J. Random Benutzer nicht ständig versucht, root zu werden, würde ich sagen, dass Dateisystem Berechtigungen Ihre beste Wette sind. Wenn jemand unerlaubten Root-Zugriff erhält, wird die Verbindungszeichenfolge durch keine Menge an Albernheit der Verschlüsselung "abgesichert".

Ich würde die Dateien mit der Verbindungszeichenfolge als Eigentümer des "Skriptbenutzers" markieren und ihnen Zugriff geben, wie Sie es beschreiben.

(Bravo für die Realisierung, dass die Verbindungszeichenfolge zu verschlüsseln Sie nichts kauft, in diesem Beispiel. Sicherheit durch Unklarheit ist kontraproduktiv.)

+0

Gute Bestätigung dessen, was ich dachte. Ich werde Sudo überhaupt nicht benutzen. Sicherheit macht mich manchmal verrückt, weil es nicht perfekt sein kann. –

0

Meine beste Lösung so weit Config-Dateien in einem speichern wurde verschlüsselte Partition, sodass Personen mit direktem Zugriff auf den Computer die Kennwörter nicht abschalten können, indem sie das Laufwerk an einen anderen PC anschließen, und mit Dateisystemberechtigungen, so dass Benutzer die Datei nicht aus dem Betriebssystem heraus lesen können.

Sie müssen jedoch verstehen, dass Sie gegen einen Angreifer mit direktem Zugriff auf die Maschine nicht viel tun können. Wenn der Datenbankserver selbst ausgeführt wird, hat das Sichern der Konfigurationsdateien keine große Auswirkung, wenn er die Datenbank selbst ändern kann. Stellen Sie nur sicher, dass alles so sicher wie möglich ist und Sie werden wahrscheinlich in Ordnung sein.

2

Hier ist ein Link zu einem freien Apache-Modul, das den Zugang zu einem Kennwortspeicher verwalten kann:

http://uranus.it.swin.edu.au/~jn/linux/php/passwords.htm

Es scheint ein wenig aufwendig zu mir, und erfordert, dass Sie PHP unter Mod_php laufen. Und immer noch nicht die Möglichkeit, dass unbefugte Personen, die Zugriff auf den Server haben, einfach Ihre Passwortdatei lesen können.

Ich denke, Sie müssen sich auf Dateiberechtigungen verlassen, und darauf vertrauen, dass nicht autorisierte Personen nicht die Fähigkeit haben, sudo zu Ihrer PHP-Anwendung UID oder root.

Verwandte Themen