PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Lesegeschützte Dateien einbinden



andti
29-05-2005, 10:12
Hallo.

Bin gerade dabei, ein sehr simples Gästebuch mit MySQL zu programmieren. In der letzten c't (11/2005) war ein"Schnellkurs Web-Datenbank". Dort war auch auf das Einbinden von Dateien mit require hingewiesen. Man sollte den Datenbankzugriff in eine Datei db.inc auslagern, damit keiner das Datenbank-Passwort auslesen kann, und sie dann einbinden. Dazu stand weiter:


Zur Sicherheit sollte man die Dateirechte von db.inc prüfen und versuchen, die Datei im Browser aufzurufen - es wäre peinlich, wenn das Datenbank-Passwort in Google zu finden wäre.

Das wollte ich jetzt an meiner Homepage einmal ausprobieren. Ich binde die einzelnen Parts meiner Seite (Grundgerüst, Menü, Inhalt, ...) per require, bzw. include in eine index.php ein. Diese Dateien kann man natürlich mit dem Browser (sofern man den Dateinamen kennt) auch unabhängig von der index.php öffnen. Mit meinem FTP-Programm habe ich jetzt mal ein wenig an der Rechtevergabe rumgespielt. Aber sobald ich die Seite nicht mehr im Browser aufrufen konnte (was ja gewollt war), konnte meine index.php sie auch nicht mehr einbinden. Als Fehlermeldung kam

Warning: main(./include/framework.inc.html): failed to open stream: Permission denied in [...] on line 26

Warning: main(./include/framework.inc.html): failed to open stream: Permission denied in [...] on line 26

Fatal error: main(): Failed opening required './include/framework.inc.html' (include_path='.') in [...] on line 26
Das wird ja wohl heißen, dass die benötigten Lese-Rechte fehlen.

Ich habe jetzt folgende Fragen:

Kann man die Rechte überhaupt so vergeben, dass ein php-Skript die Datei auslesen kann, der Browser aber nicht?
Wie macht ihr das mit euren Datenbank-Passwörtern?


Danke für eure Hilfen,
andti.

klewan
29-05-2005, 10:55
Hallo


wenn dein DocumentRoot z.b.:
/var/www/htdocs ist
also das verzeichniss das man mit dem webbrowser durchstöbern kann (wenn FancyIndex on ist)


dann speicher die config dateien unter /var/www/config oder so
da das nicht im DocumentRoot ist kann man mit dem webbrowser da nicht rein

php jedoch kann auch am filesystem lesen und schreiben


zusätzlich halt noch lese bzw lese+schreib rechte auf die jeweiligen files


lg

andti
29-05-2005, 11:32
Danke für den Tipp. Klappt supi.

andti.

Gaert
29-05-2005, 16:22
Hallo,

dass du genau über diese Stelle im c't Beispiel stolperst wundert mich nicht... Include Dateien mit der Endung .inc enden zu lassen halte ich trotz des Hinweises mit dem Leseschutz für äußerst fatal.
Besser ist es die Dateien mit .inc.php Enden zu lassen - damit ist ausgeschlossen die Dateien auszulesen.

Gruß,

Gaert