Beschäftigt wie eh und je reicht es heute lediglich für einen kurzen Hinweis von der senäh’schen Volksfront. Es geht um das ggf. notwenige Absichern einer Zend Framework (=ZF) Applikation. Konkret meine ich das Verhindern des Zugriffs auf die application.ini.
Warum den Zugriff verweigern?
Weil dort mitunter sensible Konfigurationsdaten zu finden sind, beispielsweise Zugangsdaten für die Datenbank. So einfach.
Wann bin ich betroffen?
Um das zu verdeutlichen, schauen wir uns einen typischen – wenn auch vereinfachten – Verzeichnisbaum einer ZF-Installation an.
- application
- configs
- application.ini
- controllers
- models
- services
- views
- Bootstrap.php
- configs
- library
- public
- index.php
Alle Aufrufe werden auf die index.php im public-Ordner umgeleitet. Die erläuterte Gefahr bestehlt genau dann, wenn man über die URL den public-Ordner hinauf wandern und sich somit im Verzeichnis bewegen kann.
Zum Verständnis ein Beispiel
Ist eure Webseite unter www.example.org erreichbar, braucht ihr euch keine Sorgen machen. Das public-Verzeichnis stellt hier quasi den/die/das Root dar, weswegen ein Stöbern in der Verzeichnisstruktur der Applikation nicht möglich ist.
Die Probleme beginnen, sobald eure Seite beispielsweise unter www.example.org/public/ aufgerufen wird. In dem Fall kann ein Benutzer einfach www.example.org/application/configs/application.ini eingeben und bekommt die gewünschte Datei im Klartext zu sehen.
Wie kann ich diese Lücke schließen?
Sehr einfach, das Zauberwort heißt .htaccess. Legt eine solche im application-Verzeichnis an und füllt sie mit folgenden 2 Zeilen:
Order deny,allow
Deny from all
Versucht ein potentieller Konfigurationsdatenspäher (was ein Wort) nun über die URL auf die so wertvolle application.ini zuzugreifen, bekommt er einen 403 Forbidden Fehler. Ziel erreicht.