Aufruf von PHP Dateien, welche in einem mit .htaccess geschützten Odner liegen - Aber wie?

...komplette Frage anzeigen

4 Antworten

Die Grundidee ist eigentlich ganz simpel. Alles, was nicht von außen, also via HTTP zugreifbar sein soll (conf-Dateien, Passwörter, geschützte Inhalte etc.) sollte auch nicht an einem Ort gespeichert sein, welcher im Zugriffsbereich des Webservers liegt.

Das Stichwort hier aus Sicht des Webservers ist der "Document Root", also das Wurzelverzeichnis der Website. Alles darin ist von außen via HTTP erreichbar (Dein beispielhaft angegebener Zugriff mit Passwort ist übrigens unzulässig, also vergiß das ganz schnell wieder; für FTP z. B. sind solche URLs zulässig, bei HTTP hingegen nicht, auch wenn es oftmals funktioniert). Sicherheitsrelevante Daten gehören also außerhalb des Document Roots gespeichert, so daß sie gar nicht erst von außen erreichbar sind. Dann brauchst Du auch keine .htaccess, weil der Webserver dort überhaupt nicht rankommt. PHP hingegen kommt an diese Dateien ran, da die Zugriffe via 'include' oder 'require' direkt auf Ebene des Dateisystems erfolgen und nicht netzwerktechnisch über HTTP.

In aller Regel hast Du bei Deinem Webhoster auf dem Server ein Stammverzeichnis ('home'), in welches Du Dich per FTP und/oder SSH einloggen kannst. Darunter können weitere Verzeichnisse liegen z. B. für Logfiles, Mails, und normalerweise auch ein Verzeichnis für die eigentliche Website, welches den erwähnten Document Root des Webservers darstellt. Aber nur dieses eine Verzeichnis ist per HTTP von außen erreichbar, alles andere in Deinem Home-Verzeichnis nicht. Und genau dort gehören Konfigurationsdateien hin.

Besser ist es, deine Anwendung so aufzubauen dass solche Dateien wie eie config.php gar nicht erst über den Browser erreichbar sind. Eine Struktur könnte z.B. so aussehen:

/htdocs/app/index.php (deine Anwendung)
/htdocs/includes/config.php (deine Config.php)

Über den Browser ist dann nur index.php aufrufbar wenn der Webserver auf das "app" Verzeichnis zeigt. Komplexere setups kann man mit mod_rewrite machen.

Setze den Ordner in dem die config.php liegt einfach auf die Berechtigung 644.

Das ist irgendwie ziemlicher Blödsinn, die config.php in ein .htaccess-geschützten Ordner zu legen. Wenn der Server richtig konfiguriert ist erzeugt die config-Datei doch sowieso keine Ausgabe.

CharliePace 28.02.2017, 13:59

Eigentlich nicht. Sicherheit ist nie Blödsinn.

0
happyfish2 28.02.2017, 15:27
@CharliePace

"Sicherheit ist nie Blödsinn" ist zwar prinzipiell richtig. Das schützen der config-Dateien über .htaccess hat aber nichts mit zusätzlicher Sicherheit zu tun. Wenn du dir ein Passwort merkst, das aber nicht aufschreibst (d.h. keine Ausgabe erzeugst), dann versteckst du doch auch nicht den Zettel, auf dem es nicht aufgeschrieben wurde ;-)

0
Netizen78 28.02.2017, 19:26
@happyfish2

Der Vergleich hinkt. Es reicht, wenn einmal aus welchen Gründen auch immer der PHP-Parser nicht läuft und das Script unverarbeitet im Browser landet. Alles schon gesehen.

Grundregel: Was nicht für den Zugriff von außen vorgesehen ist, gehört auch nicht in ein von außen zugreifbares Verzeichnis. Eine .htaccess ist hier nur das Pflaster auf einer offenen Wunde. Sicherheitsrelevante Dateien gehören außerhalb des Document Roots gespeichert, also außerhalb des Wurzelverzeichnisses des Webservers und somit fern vom Zugriff via HTTP.

1

Was möchtest Du wissen?