Apache-Modul

Wenn PHP als Apache-Modul eingesetzt wird , übernimmt es die Benutzerrechte des Apache ( üblicherweise user "nobody" ) . Das hat verschiedene Auswirkungen auf Sicherheit und Authentifizierung , z.B. : Wenn Sie PHP zum Zugriff auf eine Datenbank benutzen , es sei denn diese Datenbank hat eine integrierte Zugriffskontrolle , müssen Sie dem Benutzer " nobody " Zugriffsrechte auf die Datenbank erteilen . Das heißt , dass ein böswilliges Skript auch Benutzerkennung und Passwort auf die Datenbank zugreifen , und sie verändern könnte . Es ist durchaus möglich , dass ein Web-Spider über die Webseite eines Datenbankadministrators stolpert , und alle Ihre Datenbanken löscht . Sie können sich dagegen mit Apache Authentifizierung schützen , oder ein eigenes Zugangsmodell unter Verwendung von LDAP , .htaccess Dateien , etc . entwerfen , und diesen Code als Teil Ihrer PHP Skripte einbinden .

Es wurde festgestellt , dass wenn einmal die Sicherheitsmaßnahmen so weit eingerichtet sind dass dem PHP User ( in diesem Fall ein Apache User ) nur mehr ein geringes Risiko bleibt , PHP daran gehindert wird , virenverseuchte Dateien in das Benutzerverzeichnis zu schreiben . Oder vielleicht wurde es auch daran gehindert , auf Datenbanken zuzugreifen oder diese gar zu verändern . In gleicher Weise wird auch davor abgehalten , " gute " oder "bösartige " Dateien zu schreiben , oder "gute " bzw . "bösartige " Datenbanktransaktionen durchzuführen .

Ein häufig gemachter Fehler in Punkto Sicherheit ist Apache Root-Rechte zu erteilen , oder die Möglichkeiten von Apache in einer anderen Weise auszuweiten .

Die Ausweitung der Benutzerrechte für Apache auf root ist sehr gefährlich , und kann dem gesamten System schaden , denn mit sudo , chroot , oder anderwärtig als root zu arbeiten sollte niemand anders als den Sicherheitsprofis überlassen werden .

Es gibt auch ein paar einfachere Lösungen . Mit open_basedir( ) Mit open_basedir( ) können Sie kontrollieren , welche Verzeichnisse PHP benutzen darf oder nicht . Sie können auch einen Bereich nur für Apache einrichten , um alle webbasierten Aktivitäten auf nicht-Benutzer - bzw . nicht-System-Dateien einzuschränken .