Common Gateway Interface
aus Wikipedia, der freien Enzyklopädie
Das Common Gateway Interface (CGI) – in etwa Allgemeine Vermittlungsrechner-Schnittstelle 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.
Ein Webserver, der CGI unterstützt, stellt der externen Software eine Laufzeitumgebung zur Verfügung, die insbesondere aus folgendem besteht:
- 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. - Bereitstellung von Ein- und Ausgabekanälen. Der stdout-Kanal mit der Antwort des Webservers verknüpft, stdin mit eventuell vorhanden POST-Daten.
CGI-Programme können also in vielen Programmiersprachen geschrieben sein, da die Anforderungen über das oben genannte nicht hinaus gehen.
Ein Nachteil der CGI-Ausführung ist ihre relativ geringe Geschwindigkeit, da für jeden CGI-Aufruf eine neue Programm-Instanz ausgeführt wird. Auf hochfrequentierten Seiten wird CGI daher heutzutage nicht mehr so oft eingesetzt, denn selbst Ansätze wie FastCGI, welches gewisse Nachteile von CGI aufhebt, konnten sich zumindest nicht auf breiter Front durchsetzen.
Um diesem Problem zu begegnen, gibt es mittlerweile z. B. für den Apache-Webserver Plugins, die verschiedene beliebte Sprachen (mod_perl für Perl, mod_python für Python, etc.) mit nativer Geschwindigkeit ähnlich einbinden, allerdings ist dies kein CGI.
Dass mit CGI Programme auf dem Webserver ausgeführt werden können, die ein Dritter erstellt hat, 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. So wird zum Beispiel PHP bei den meisten Providern als CGI-Modul eingebunden (dadurch verliert PHP allerdings seinen Geschwindigkeitsvorsprung gegenüber CGI).
Weitere serverseitige Technologien: