Zum Inhalt springen

Common Gateway Interface

aus Wikipedia, der freien Enzyklopädie
Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 4. November 2014 um 22:37 Uhr durch Spriebsch (Diskussion | Beiträge). Sie kann sich erheblich von der aktuellen Version unterscheiden.

Das Common Gateway Interface (CGI) ist ein Standard für den Datenaustausch zwischen einem Webserver und dritter Software, die Anfragen bearbeitet. CGI ist eine schon länger bestehende Variante, Webseiten dynamisch bzw. interaktiv zu machen, deren erste Überlegungen auf das Jahr 1993 zurückgehen.

Funktionsweise

Ein Webserver, der CGI unterstützt, stellt der externen Software eine Laufzeitumgebung zur Verfügung, die insbesondere aus Folgendem besteht:

Umgebungsvariablen
Umgebungsvariablen (z. B. „SERVER_NAME“), die dem Programm helfen, sich über die Anfrage Webserver-Einstellung und -Situation zu informieren. Die Bezeichnungen sowie das Format der Inhalte sind größtenteils standardisiert.
Ein- und Ausgabekanäle
Bereitstellung von Standard-Datenströmen. Meist wird der stdout-Kanal mit der Antwort des Webservers verknüpft, stdin mit dem eventuell vorhandenen Request-Body.

Vorteile

Statt nur statische Seiten von einem Webserver zu laden, die dort als Ressource zur Verfügung stehen, ist es mit CGI auch möglich, HTML-Seiten dynamisch zu erzeugen. Diese müssen zur Zeit der Anfrage noch nicht auf dem Server existieren, sondern können von dem CGI-Programm erzeugt werden.

Außerdem können CGI-Programme in vielen Programmiersprachen geschrieben sein, da die Anforderungen über das Obengenannte nicht hinausgehen.

Nachteile

Ein Nachteil der CGI-Ausführung ist die schlechte Performanz, da für jeden CGI-Aufruf ein neuer Prozess gestartet werden muss. CGI wird daher heutzutage kaum mehr eingesetzt. Stattdessen kommt heute zumeist das FastCGI-Protokoll zum Einsatz, bei dem die externen Prozesse bereits vorab gesartet werden.

Sicherheit

Dass Programme, die ein Dritter erstellt hat, auf dem Webserver ausgeführt werden können, ist in höchstem Maße sicherheitsrelevant. Daher muss sichergestellt sein, dass ein über CGI gestartetes Programm nur bestimmte, eingeschränkte Typen von Programmroutinen ausführen darf (z. B. kein Löschen von Dateien des Webservers u. ä.). Bei dem Apache-Webserver wird die Ausführung von CGI-Programmen mit Hilfe des Modules suexec gegen solche Cracker-Angriffe gesichert, die das Eindringen als Root-User zum Ziel haben. Die Sicherheitsmaßnahmen sind dabei mehrstufig aufgebaut und so streng, dass viele Server-Administratoren dazu übergegangen sind, auch andere serverseitige Sprachen über CGI laufen zu lassen.

Weitere serverseitige Technologien