Risiken von Common Gateway Interface (CGI)
Die Optionsdirektive "IncludesNOEXEC" verhindert SSI, aber nicht das Ausführen von CGI-Skripten. Denn die können mit
<-- #inlcude virtual="Irgendein-CGI-Skript" -->
noch gestartet werden, wenn die Skripte in einem Verzeichnis liegen, das mit der ScriptAlias-Direktive festgelegt wurde. Wenn Sie CGI-Skripte auf dem Webserver einsetzen, sollten Sie dem Programmierer unbedingtes Vertrauen entgegenbringen. Denn CGI-Skripte können beliebige Befehle mit den Benutzerrechten des Webservernutzers ausführen und somit prinzipiell sehr gefährlich sein.
Darüber hinaus laufen alle CGI-Skripte mit denselben Benutzerrechten und können sich daher gegenseitig ins Gehege kommen. Hier gibt es seit Apache 1.2 zwei Lösungen: suEXEC und CGIWrap.
Mit dem suEXEC-Wrapper laufen jedes CGI-Programm und jede SSI-Direktive nur mit der Benutzer-ID des Webservers. Anfragen an den Wrapper kann der Administrator weiterleiten, indem er innerhalb eines virtuellen Hosts eine SuexecUserGroup definiert, etwa so:
SuexecUserGroup USER GRUPPE
oder mit der UserDir-Direktive Benutzerverzeichnisse festlegt. Die Direktive
UserDir /home/*/webUserDir disabled root
in der Konfiguration definiert zum Beispiel im Home-Verzeichnis jedes Benutzers (*) das web-Verzeichnis für den eigenen Webauftritt. Dieses wird dann im Browser angezeigt, wenn man
http://meinhost.de/~BENUTZER/
eingibt. Ganz wichtig ist die zweite Zeile der Direktive. Dieser Befehl schließt ab der Apache-Version 1.3 das Home-Verzeichnis des Benutzers root explizit aus. Sonst besteht die Gefahr, dass man nach der Eingabe
http://meinhost.de/~root
im Wurzelverzeichnis des Systems landet.