Sven Rautenberg: Wie sicher sind *.php und *.inc Dateien?

Beitrag lesen

Moin!

Wo soll ich Passwörter eintragen? Ich hätte gerne eine globale Include-Datei mit all den Zugangsdaten, aber die kann dann ja jeder lesen, der die URL der Datei kennt....

Was würdet ihr mir raten?

Das tolle bei Dateien mit der Endung ".php" ist, dass sie unter normalen Umständen niemals als Quelltext ausgeliefert werden. Dort im PHP-Code also Passwörter an Variablen zuzuweisen ist hinsichtlich der Sicherheit gut.

Dummerweise sind solche Include-Dateien grundsätzlich so zu programmieren, wie ein komplettes Skript. Wird darin beispielsweise include() eingesetzt, in dem eine Variable vorkommt, ist gleichzeitig register_globals gesetzt und allow_url_fopen auch auf on, kann man die einzelne Include-Datei mit URL-Parametern aufrufen und Schaden anrichten.

Die Abhilfe ist eine Dateiendung wie ".inc", welche üblicherweise nicht durch den PHP-Parser gejagt wird, aber eben ohne weitere Vorkehrungen im Quelltext ausgeliefert würde, sofern man ihre URL kennt.

Es hängt stark vom Provider ab. Manche sperren den HTTP-Zugriff auf ".inc".

Am schlauesten erscheint mir, sich die Standard-Konfiguration des Apache-Webservers zunutze zu machen: Der Zugriff auf Dateien, deren Name mit ".ht" BEGINNT (nicht endet), ist normal nicht erlaubt. Auf diese Weise sind die typischen Dateien ".htaccess", ".htusers", ".htpasswd" etc. geschützt.

Es spricht nichts dagegen (und viel dafür), sich diesen Schutz zunutze zu machen und seine geheimen PHP-Passwort-Includes als ".htphpinc.php" abzulegen.

Nachteil: Dateien, die mit einem Punkt beginnen, werden von Unix-Betriebssystemen gerne als "versteckt" behandelt, tauchen in einem normalen Directory-Listing, wie man es auch mit FTP erhalten würde, nicht auf. Das könnte einen also eventuell hindern, wenn man seinen FTP-Client nicht im Griff hat. :)

- Sven Rautenberg