Sichere PHP-Anwendungen mit SuExec

Wenn Ihre Anwendung auf Apache läuft (wie mehr als die Hälfte der Websites im Internet zu tun), können Sie zu prüfen, SuExec in der Apache-Konfiguration ermöglicht. SuExec ist ein Mechanismus, mit Apache ausgeliefert wird, die Scripts ausgeführt werden, wenn der Benutzer verursacht, die das Skript, sondern besitzt als sie als Web-Server-Benutzer ausgeführt wird.

In einer nicht SuExec Umgebung werden alle Skripte als der gleiche Benutzer-ID als Web-Server selbst ausgeführt werden. Leider kann man verwundbar Skript ein böswilliger Benutzer Hintertür Zugriff auf die gesamte Web-Server geben, einschließlich der Skripte auf anderen Websites auf demselben Server gehostet läuft.

SuExec versucht, dieses Problem zu mildern, indem Web-Anwendungen auf ihre eigenen Bereiche zu beschränken und sie unter ihrer Besitzer Benutzer-IDs laufen, anstatt unter der Benutzer-ID des Webservers. Zum Beispiel würde dieses Skript unter der Benutzerkennung laufen von jsmith:

/home/~jsmith/public_html/scripts/please_hack_me.php

Ein böswilliger Benutzer könnte dieses Skript ausnutzen, aber er oder sie nur Zugriff auf Dateien und Programme, die das jsmith Benutzer verwenden darf. Jede andere Benutzer auf dem Server würde aus geschützt werden jsmith'S unsicher Skript.

Leider SuExec immer richtig funktioniert mit virtuelle Hosts, oder mehrere unabhängige Websites physisch auf der gleichen Web-Server befindet, kann schwierig sein. SuExec ist so konzipiert, Skripts ausführen, die in den Webserver des Document-Root existieren.

Die meisten virtuellen Hosts sind so eingerichtet, dass jede einzelne Website root sein eigenes Dokument gibt, und jedes Dokument der Site-Stamm ist nicht unter den Webserver des Document-Root befindet. Um diese Einschränkung zu erhalten, muss der Systemadministrator hinzufügen jedes Dokument root virtuellen Host in das Dokumentstamm Variable Webserver in der Apache-Konfigurationsdatei.

SuExec erfordert auch, dass PHP-Skripte wie Common Gateway Interface (CGI) ausgeführt werden, die als PHP als vorkompilierte Modul unter Apache läuft langsamer ist. CGI war das erste praktikables Modell für Web-Anwendungen, und es ist immer noch für einfache Skripte verwendet. Allerdings, wenn Sie in den Bereich der PHP-Scripting und dem Schreiben beginnen vollwertige Anwendungen verlassen, werden Sie die Performance-Steigerung von vorkompilierte PHP benötigen.

Für ziemlich einfache Web-Server können SuExec eine unsichere Anwendung halten aus der ganzen alles andere mit Füßen treten. Doch in einer komplexeren Umgebung mit virtuellen Servern, vorkompilierte Module und Dutzende oder Hunderte von Benutzern, benötigen Sie ein Sicherheitsmodell, das ein bisschen robuster ist.

Menü