Das Common Gateway Interface (CGI) bildet eine universelle Schnittstelle zwischen einem Webserver und externer Software oder Skripten. Zu ihren wichtigsten Anwendungen gehört, dynamische Inhalte in Webseiten einzubinden und Elemente wie beispielsweise Kontakt- oder Eingabeformulare interaktiv zu gestalten. CGI als Schnittstelle unterstützt zudem neben externer Software eine Vielzahl von Programmiersprachen, in denen sich eigene oder fremde Skripte auf einem Webserver nutzen lassen.
Wie funktioniert eine CGI Schnittstelle auf einem Webserver?
CGI wurde bereits 1993 vorgestellt und kurz darauf für den produktiven Einsatz standardisiert – das Interface zählt somit zu den ältesten Methoden, mit denen sich in Echtzeit generierte und individuelle Inhalte für einen Server generieren und verarbeiten lassen. Es stellt eine normierte Schnittstelle zur Verfügung, die den Austausch von Informationen wie Variablen, Eingaben oder Steuerbefehlen übernimmt. Anfragen leitet das CGI mit den relevanten Daten an externe Software oder Skripte weiter, die anschließend mit einem durch Interface interpretierbaren Resultat antworten. Aus diesem erstellt der Server einen allgemein gültigen, einmaligen, individuellen HTML Code und bettet ihn an entsprechender Stelle in eine Webseite ein.
Welche Vorteile bietet CGI gegenüber anderen Schnittstellen?
Wie andere Interfaces für externe Programme und Interpreter von Skriptsprachen erfolgt die Einbindung von CGI in einen Webserver meist über ein entsprechendes Modul, das bei Serverstart geladen wird. Als universelles Interface bietet es dabei zahlreiche Vorteile, die zu seiner überdurchschnittlich hohen Popularität und Verbreitung beitragen:
- Breite Kompatibilität mit unterschiedlichen Programmiersprachen inklusive Python, Perl, Ruby oder C
- Bei entsprechender Konfiguration sehr hohe Sicherheit durch mehrstufige Isolation und Rechteverteilung
- Einfache, schnelle und flexible Integration in bestehende IT-Infrastrukturen
- Vielseitige Funktionalität mit Unterstützung für proprietäre Programme und Plug-ins
- Freier Standard ohne zusätzliche Kosten etwa für Lizenzen
- Sehr umfangreiche Dokumentation und breite Unterstützung durch kommerzielle Anbieter und die Community
- Native Unterstützung durch prominente Webserver wie Apache II oder Microsoft IIS
- Alternative Module für ähnliche Verwendungen wie FastCGI verfügbar
Zu den entscheidenden Argumenten für den Einsatz von CGI als Schnittstelle zum Webserver zählen seine hohe Flexibilität und die unkomplizierte Einrichtung und Konfiguration. Das Interface ermöglicht zudem eine direkte, standardisierte Kommunikation mit externen Instanzen – unabhängig von der verwendeten Software oder Programmiersprache.
Was sind relevante Nachteile der CGI Schnittstelle?
Die vergleichsweise niedrige Performance stellt einen der wichtigsten Gründe dar, die gegen CGI sprechen,. Jede Anfrage startet das eingebundene Programm in einem eigenen, separaten und isolierten Prozess. Bei einer hohen Spitzenlast erhöht sich dadurch der Ressourcenbedarf überdurchschnittlich schnell, so dass selbst auf einem eigentlich ausreichend leistungsfähigen Server Timeout-Fehler auftreten können. In diesem Fall ist die Hardware schlicht nicht in der Lage, Anfragen fristgerecht zu verarbeiten und antwortet deshalb mit einem negativen HTTP Status Code.
Potenziell erlaubt die CGI Schnittstelle einem Nutzer einen Zugriff selbst auf sicherheitskritische Bereiche eines Servers und kann deshalb eine erhebliche Sicherheitslücke darstellen. Darüber hinaus darf sie ausschließlich Programme und Skripte aus einer seriösen, zertifizierten Quelle aufrufen, um eine Kompromittierung durch Cyberkriminelle und eine spätere Erweiterung der Nutzerrechte zuverlässig ausschließen zu können.
Welche Alternativen zu CGI bieten sich an?
Lange Zeit galt CGI als die bevorzugte Methode, um dynamische oder interaktive Inhalte zu gestalten. Allerdings setzt sich seit 2015 zunehmend der Einsatz von Modulen durch, die sich speziell an eine Programmiersprache richten und auf diese optimiert wurden. Als entscheidend für deren rasch wachsende Popularität zeigt sich primär der in der Regel deutlich niedrigere Verbrauch von Ressourcen. Zu den wichtigsten Alternativen gehört PHP, auf dem die meisten dynamischen Webseiten und viele Content Management Systeme aufbauen. Einen direkten Ersatz bietet hingegen Microsoft mit den Active Server Pages (ASP) – diese Schnittstelle bündelt eingehende Anfragen in einem einzigen Prozess und unterstützt ebenfalls eine umfangreiche Auswahl an externen Programmiersprachen, drunter z. B. Python, Perl oder Ruby. Mit FastCGI existiert zudem ein in der Funktionalität nahezu identischer Standard, der jedoch durch effiziente Prozessbündelung eine deutlich höhere Performance erreicht.