[php] MySQL-Passwort sicher auf Webspace ablegen?

Gandalfx86

Lieutenant
Registriert
Apr. 2004
Beiträge
734
Ich habe eine Frage:
Das MySQL-Datenbank Passwort muss einem php-Skript ja zur Verfügung gestellt werden. Die Frage ist, wie man das möglichst sicher macht. Weniger Rechte als chmod 444 geht ja nicht. Das Problem ist nur, dass dann trotzdem auf die Datei von außen lesend zugegriffen werden kann. Ich packe die Definition der Variablen natürlich in <?php ... ?>, aber sollte php aus irgendeinem Grund einmal nicht laufen(zum Beispiel durch eine gezielte DOS-Attacke) so lässt sich das Passwort direkt ablesen.
Meine Idee war jetzt folgende: ich packe die Datei mit dem Passwort in das Wurzelverzeichnis meines Webspace (z.B. /sicher ). Die Domain selbst wird auf /www/unterverzeichnis/ gelegt.
Die Domain ist auf /www/unterverzeichnis/ zeigend eingerichtet.

Meine Frage ist: Bietet das wirklich einen höheren Schutz? Denn solange jemand nicht den ftp-Accout gehackt hat sollte die Datei da doch sicher sein? Zugriffe wie http://www.domain.de/../../sicher/passwortdatei.php müsste ein Webserver doch normalerweise blocken?
 
Am sichersten ist wenn du den Wert mit md5 verschlüsselts und den in die Datenbank schreibst.
So kann das Passwort nur noch durch BruteForce Attaken entschlüsselt werden.

Grüße

tewes
 
Die *.php Datei in der du das Passwort speicherst kannst du in ein Unterverzeichnis packen, welches du mit einem htaccess schützt.
Wenn der PHP Parser mal abstürzen sollte, sollte man dennoch nicht durchs htaccess kommen um die Datei lesen zu können.

@ tewes

Hää, hab ich das grad richtig verstanden? Du willst das Datenbankpasswort in die Datenbank schreiben? Das wäre ja wie wenn du den Tresorschlüssel im Tresor aufbewahrst... öffenen wirst du damitd en Treso bzw. die Datenbank nicht können, da du den Schlüssel bzw. das PW ja schon bräuchtest, um überhaupt an den Schlüssel/das PW ranzukommen ;)
 
DaveStar schrieb:
Die *.php Datei in der du das Passwort speicherst kannst du in ein Unterverzeichnis packen, welches du mit einem htaccess schützt.
Wenn der PHP Parser mal abstürzen sollte, sollte man dennoch nicht durchs htaccess kommen um die Datei lesen zu können.

Stimmt natürlich. htacces werde ich auch noch einrichten. Aber mal ganz generell: wäre die Datei da vor Zugriffen sicherer, oder kann man auf Verzeichnisse oberhalb des Verzeichnisses, auf das die Domain zeigt so ohne weiteres zugreifen? Normalerweise doch nicht?
 
Nein kann man nicht. Der Webserver stellt die ja garnicht zur Verfügung.
Und wo liegt das Problem daran, das PW einfach in die PHP Datei zu schreiben? Die Datei wird ja immer geparst und lässt sich so nicht lesen.
 
Backslash schrieb:
Nein kann man nicht. Der Webserver stellt die ja garnicht zur Verfügung.

Doch: Ich stelle die Domain auf /www/irgendeinverzeichnis/, wo die index.php liegt. Die Passwörter liegen aber in einem zusätzlich mit htaccess geschützten Verzeichnis /sicher/.

Backslash schrieb:
Und wo liegt das Problem daran, das PW einfach in die PHP Datei zu schreiben? Die Datei wird ja immer geparst und lässt sich so nicht lesen.

Wenn PHP abstürzt wird eben garnichts geparst, sondern die *.php Datei so wie Sie auf dem Server liegt ausgegeben, inklusive den Passwörtern, die dann in Klartext vorliegen.
 
>"Doch: Ich stelle die Domain auf (...)"

Was meinst du denn mit "Die Domain auf [pfad] stellen"? Ich bin davon ausgegangen, dass du das doc-root Verzeichnis des Servers meinst. Auf einen Pfad darüber kann doch von außen nicht zugegriffen werden ?!

>"Wenn PHP abstürzt (...)"

Was man erstmal schaffen muss, dass PHP abstürzt und der restliche Server weiterläuft O.o
Außerdem läuft PHP ja nicht die ganze Zeit, sondern wird aufgerufen um die Datei zu parsen und dann wieder geschlossen, oder?
Ist das PW so sensibel, dass es den Aufwand wert ist?
 
Also zumindest nen kurzen htacess dafür einzurichten ist es auf jedenfall wert, das würde ich mich Sicherheit machen.

Und dass der PHP Parser abstürzt und der Appache weiterläuft kann durchaus vorkommen. Hab das z.B. mal bei einem Browsergame erlebt - das PW war zwar geschützt, doch die User konnten sich dadurch den Quellcode des gesamten Spiels runterladen und kurz darauf wurden viele Lücken darin natürlich ausgenutzt.
Von da her würde ich sogar in Betracht ziehen, sämtliche PHP Dateien hinter einen .htacess zu stellen ausser die index.php - und die index.php sollte dann nichts anderes entahlten als include("geschütztesverzeichnis/index.php";), dann sollte das alles sein, was im Falle eines Parsercrashes öffentlich zu sehen ist :)
 
Wie lautet denn der Befehl um den Zugriff auf ein Verzeichnis per htaccess zu verhindern?
 
Code:
Order deny,allow

Das ist auch schon alles. Die .htaccess-Datei muss sich im zu schützendem Verzeichnis befinden.
 
Code:
deny from all

sollte auch noch drin stehen (gerade mit Apache 2.2 @ Ubuntu getestet).
 
Nein, das ist überflüssig. "Order deny,allow" sagt, dass es grundsätzlich verboten ist und ausnahmen speziell erlaubt werden müssen.
 
Computer-Freak - ich hatte es getestet.
Eine htaccess mit "order deny,allow" reicht nicht, wenn als Standard in der conf.d / httpd.conf "allow from all" und "deny from none" drin steht.

Man sollte auf Nummer sicher gehen - und da das hier das Ziel ist, sollte ein "deny from all" fehlen. "Deny from all" ist nicht auf jedem Server Standard. Deshalb die Direktive direkt setzen!
 
Zurück
Oben