Was ist das CGI-Dateiformat?
Die Erweiterung .cgi steht für Common Gateway Interface - ein Standardansatz zur Erstellung von Webanwendungen und dynamischen Inhalten auf Webseiten. Die Erweiterung .cgi bietet, wenn sie auf einem Webserver angewendet wird, eine Schnittstelle zwischen ausführbaren Programmen und dem Webserver, der den Website-Inhalt generiert. Alle derartigen Programme werden als CGIs oder CGI-Scripts bezeichnet.
Diese Dateien werden im Allgemeinen in einer Skriptsprache wie Perl, Python oder Shell-Script geschrieben, obwohl eine .cgi-Datei gleichermaßen eine kompilierte Binärdatei (zum Beispiel ein C-Programm) sein kann. Die Erweiterung selbst sagt nichts über die darin enthaltene Sprache aus - die Shebang-Zeile ganz oben im Skript, wie etwa #!/usr/bin/perl oder #!/usr/bin/python3, teilt dem Webserver mit, welcher Interpreter aufgerufen werden soll.
Ein CGI-Script läuft auf dem Server einmal pro eingehender HTTP-Anfrage. Es liest Anfragedaten aus Umgebungsvariablen (QUERY_STRING, REQUEST_METHOD, CONTENT_TYPE) und akzeptiert POST-Body-Daten über stdin, schreibt dann eine HTTP-Antwort - Header gefolgt vom Body-Inhalt - direkt nach stdout. Damit sie funktioniert, muss die Datei in einem CGI-fähigen Verzeichnis (traditionell /cgi-bin/) abgelegt werden und die Ausführungsberechtigung auf dem Server gesetzt sein.
.cgi ist ein Schnittstellenstandard, keine Programmiersprache. Mehrere andere Dateiformate teilen sich die Erweiterung .cgi: .pl, .py oder .sh Scripts werden oft in .cgi umbenannt, damit der Webserver sie über den CGI-Mechanismus leitet. Da CGI für jede Anfrage einen neuen Prozess startet, ist es bei hoher Last langsam und wurde weitgehend durch FastCGI, mod_php, WSGI und moderne Anwendungsserver ersetzt - obwohl es auch heute noch auf den meisten Webservern unterstützt wird.
Sicherheit
RISIKO: MEDIUMDas Lesen einer .cgi in einem Texteditor ist sicher - sie wird nicht durch das Öffnen ausgeführt. Das Risiko liegt in der AUSFÜHRUNG auf einem Server: CGI-Scripts laufen mit den Privilegien des Servers und sind historisch gesehen eine große Angriffsfläche für Web-Schwachstellen (der Shellshock-Bug von 2014 wurde weitgehend über CGI-Shell-Scripts ausgenutzt; schlecht geschriebene CGIs ermöglichen Command Injection, Path Traversal und beliebige Code-Ausführung). Installieren Sie niemals ein heruntergeladenes .cgi, das Sie nicht verstehen, halten Sie Interpreter und Server auf dem neuesten Stand, schränken Sie die Berechtigungen für /cgi-bin/ ein und bevorzugen Sie FastCGI/App-Server-Alternativen für neue Projekte. Behandeln Sie unbekannten CGI-Quellcode als nicht vertrauenswürdigen Code, der vor der Ausführung überprüft werden muss.
Formatdetails
kurz gefasst- EToys / Nischen-App-Daten mit .cgi - Einige wenige nicht verwandte Anwendungen haben .cgi für ihre eigenen Datendateien wiederverwendet; auf einem Webserver ist eine .cgi fast immer ein Gateway-Script.
Programme zum Öffnen von CGI-Dateien
Technische Details
technische Spezifikation| MIME-Typ | application/x-httpd-cgi |
| Alternative MIME-Typen | text/plain, application/octet-stream |
| Dateikodierung | Klartext (ASCII/UTF-8) für Scripts; native Binärdatei für kompilierte Executables |
| Dateisignatur | Keine festen Magic Bytes - Text-Scripts beginnen mit einer Shebang-Zeile (#!/usr/bin/perl, #!/usr/bin/python3, #!/bin/sh, etc.); kompilierte CGI-Binärdateien tragen den plattformspezifischen Executable-Header (ELF unter Linux, MZ unter Windows) |
| Ausführungsmodell | Webserver forkt pro HTTP-Anfrage einen neuen OS-Prozess, um das Skript oder die Binärdatei auszuführen; der Prozess wird beendet, nachdem die Antwort gesendet wurde |
| Eingabemechanismus | Anfragedaten werden über Umgebungsvariablen (QUERY_STRING, REQUEST_METHOD, CONTENT_TYPE, HTTP_*-Header) übermittelt; POST-Body wird über stdin übergeben |
| Ausgabemechanismus | Das Skript schreibt HTTP-Antwort-Header (Name: Wert-Zeilen), gefolgt von einer Leerzeile und dem Antwort-Body direkt nach stdout |
| Erforderliche Bereitstellung | Die Datei muss sich in einem CGI-fähigen Verzeichnis befinden (üblicherweise /cgi-bin/) und das Ausführungs-Bit gesetzt haben; der Webserver-Benutzer benötigt Lese- und Ausführungsrechte |
| Typische Skriptsprachen | Perl, Python, Bash/Shell, Ruby, C (kompiliert zu einer nativen Binärdatei) |
| Typische Dateigröße | 1 KB - 100 KB für Text-Scripts; größer für kompilierte Binärdateien |
| Kompression | Keine innerhalb der Datei selbst; der HTTP-Antwort-Body kann separat vom Skript oder Server gzip-komprimiert werden |
| Plattformunterstützung | Linux, Unix, macOS, Windows - jedes Betriebssystem, auf dem ein CGI-fähiger Webserver läuft |
| Gängige Webserver | Apache HTTP Server, Nginx (über FastCGI-Wrapper), lighttpd, Microsoft IIS |
| Leistungsmerkmal | Langsam bei hoher Last - jede Anfrage erzeugt und zerstört einen neuen Prozess; für hochfrequentierte Deployments durch FastCGI, WSGI und ASGI ersetzt |
| Sicherheitsaspekt | Skript-Quellcode ist auf der Festplatte lesbar; schützen Sie ihn mit strengen Dateiberechtigungen und vermeiden Sie es, das CGI-Verzeichnis über eine direkte URL außerhalb des vorgesehenen /cgi-bin/-Pfads freizugeben |
| Veröffentlicht | 1993 (NCSA HTTPd); formalized as CGI/1.1 in RFC 3875 (2004) |
| Neueste Version | CGI/1.1 (RFC 3875, October 2004) |
| Offener Standard | Ja · lizenzgebührenfrei |
| Spezifikation | www.rfc-editor.org |
CGI-Konvertierungen
Community Q&A
von Nutzern gefragtNoch keine Fragen - stellen Sie die erste Frage zu CGI-Dateien.
Häufig gestellte Fragen
Was ist eine .cgi-Datei?
Wie öffne ich eine .cgi-Datei?
/cgi-bin/ des Servers, machen sie ausführbar und rufen ihre URL auf; CGIs werden nicht durch Doppelklick ausgeführt.Warum zeigt mein Browser den CGI-Code an, anstatt ihn auszuführen?
/cgi-bin/ ab und korrigieren Sie die Berechtigungen.