Erwägen Sie die Einrichtung open_basedir
auf "pro Site" -Basis. open_basedir
ist eine php.ini-Einstellung, die verhindert, dass Ihre Skripte auf Dateien außerhalb einer definierten Whitelist zugreifen. Wenn Ihr Server mehrere Sites hostet, wird verhindert, dass eine Site die Datenbankeinstellungen von einer anderen Site liest. Es wird auch verhindert, dass ein PHP-Skript auf Kernsystemdateien zugreift / diese ändert. Open Basedir ist einfach einzurichten. Fügen Sie einfach die Zeile " php_admin_value open_basedir /my/list/of/folders:/as/a/colon/seperated/list
" zu jedem Apache-Host hinzu.
Erwägen Sie auch, die PHP-Skript-Engine für alle Sites / Ordner zu deaktivieren, die keine PHP-Skripte enthalten sollten (z. B. einen hochgeladenen Bilderordner). Auch dies ist ganz einfach: Fügen Sie "php_admin_value engine off" zu allen Apache VirtualHosts hinzu, die kein PHP benötigen. Um PHP in einem Verzeichnis zu deaktivieren, fügen Sie dasselbe in ein Directory-Tag ein.
Führen Sie Dateiberechtigungen so knapp wie möglich aus. Vermeiden Sie den Schreibzugriff auf PHP-Skripte für den Apache-Benutzer. Dadurch wird verhindert, dass sich ein ausgeführtes Skript oder andere Skripte auf derselben Site / demselben Server ändern. Vermeiden Sie 777-Berechtigungen, wenn dies möglich ist. Ermitteln Sie die Mindestberechtigungen, die zum Ausführen der Anwendung erforderlich sind, und verwenden Sie diese.
Wenn Sie mehrere Sites mit jeweils einer eigenen Datenbank hosten, verwenden Sie für jeden einen separaten MySQL / Postgres-Benutzer und stellen Sie die Berechtigungen für jeden Benutzer so ein, dass er nur Zugriff auf die relevanten Datenbanken hat. Dies verhindert wiederum, dass ein unerwünschtes Skript die Datenbank einer anderen Anwendung manipuliert.
Suosin, HardenedPHP, mod_security und ähnliches sind ebenfalls wertvoll, aber verwenden Sie sie zusätzlich zu einer streng gesperrten Konfiguration, nicht stattdessen.