4.10.3. Dynamische Dokumente
Dynamische Dokumente lassen sich auf zwei Wegen erzeugen:

  • server-side includes (SSI)
  • CGI - Programme

Bei den SSI werden die Seiten vor der Auslieferung geparst. Hierbei können auch externe Programme aufgerufen werden. Dies stellt auf verschiedenste Weisen ein Sicherheitsrisiko dar. Aus diesem Grund sollte der Einsatz von SSI genau geprüft werden. Dabei stellt sich insbesondere die Frage, ob wirklich externe Programme aus den SSI heraus aufgerufen werden müssen. Wenn nicht, kann dieser Teil über den Konfigurationsparameter IncludesNOEXEC deaktiviert werden.

CGI können auf zwei Arten ermöglicht werden. Entweder werden spezielle Handler auf Dateien gesetzt oder die Ausführung von CGI ist auf bestimmte Verzeichnisse begrenzt. Eine Aktivierung eines Handlers für CGI sollte nur erwogen werden, wenn

  • man den Benutzern, die CGI programmieren, vertrauen kann, dass sie die Sicherheitsproblematik verstanden haben und bereit sind zu berücksichtigen.
  • die Sicherheit des Servers bereits so durchlöchert ist, dass ein unsicheres CGI auch kein Problem mehr ist.
  • man keine Nutzer hat und niemand den Server je besucht.

Wenn die CGI in definierten Verzeichnissen liegen (ScriptAlias) ermöglicht dem Administrator eine gewisse Kontrolle, was auf dem System läuft und wer dort programmiert. Auch diese Alternative erfordert zwar eine Kontrolle, diese ist aber einfacher durchführbar. Falls man den Nutzern keinen direkten Schreibzugriff ermöglicht, kann der Administrator sogar jedes CGI vor der Freischaltung prüfen. Diese Alternative ist sehr weit verbreitet. Sie ermöglicht auch eine einfache gemeinsame Nutzung Programme.

Sobald man CGI aktiviert muss man den Schreibern der Programme ein entsprechendes Vertrauen entgegenbringen. Als Betreiber muss man genauso eine gewisse Kontrolle über das System behalten und die Sicherheit im Auge haben.

Die CGI werden allerdings alle unter der gleichen UID ausgeführt. Dieses kann bei konkurrierenden Programmierern zu einem Problem werden. In diesem Fall bietet der Apache die Möglichkeit dem CGI oder SSI gezielt eine UID zuzuweisen (suEXEC) oder man muss einen „cgiwrapper“ installieren.