Erstellung von CGI-Programmen



  • Regeln für die Abarbeitung von CGI-Skripten durch den HTTP-Daemon (suEXEC)

    • Beim Einrichten Ihres CGI-Verzeichnisses wird automatisch das Unterverzeichnis cgi-bin angelegt.

    • Ihre CGI-Skripte müssen in Ihrem Verzeichnis cgi-bin oder in einem Unterverzeichnis von cgi-bin liegen. HTML-Dokumente dürfen nicht im cgi-bin-Verzeichnis abgelegt werden.

    • CGI-Skrite werden auf dem CGI-Server in einer sogenannten suEXEC-Umgebung abgearbeitet. Dies bedeutet, dass die Skripte unter dem Account des Skript-Besitzers abgearbeitet werden - nicht unter dem Account des HTTP-Daemons. Skripte, die nicht dem Besitzer des CGI-Verzeichnisses gehören, werden vom Server nicht abgearbeitet.

    • Damit ein Skript ausgeführt werden kann, muss das Ausführungsrecht vergeben werden.

    • Schreibrechte für ein Skript und für das Skript-Verzeichnis darf nur der Besitzer haben. Es wird vom HTTP-Daemon kein Skript abgearbeitet, dem neben dem Besitzer-Schreibrecht noch weitere Schreibrechte eingeräumt wurden.

    Beispiel:

    Die Basis-URL des Benutzers rztwww ist http://cgi.tu-harburg.de/~rztwww . Testen Sie die folgenden CGI-Skripte:

    URL Besitzer Dateirechte
    http://cgi.tu-harburg.de/~rztwww/cgi-bin/Tests/test.cgi rztwww -rwxr-xr-x
    http://cgi.tu-harburg.de/~rztwww/Kurse/PHP/CGI-Server/test.pl rztwww -rwxr-xr-x
    http://cgi.tu-harburg.de/~rztwww/cgi-bin/Tests/test2.cgi nobody -rwxr-xr-x
    http://cgi.tu-harburg.de/~rztwww/cgi-bin/Tests/test3.cgi rztwww -rwxrwxr-x

    Die letzten zwei Skripte funktionieren nicht richtig:

    • Skript 3 wird nicht aus dem cgi-bin-Verzeichnisbaum gestartet. Das File wird deshalb nicht interpretiert sondern als Textfile ausgegeben.
    • Skript 3 hat einen falschen Besitzer. Es gibt deshalb einen Serverfehler.
    • Skript 4: die Gruppe hat Schreibrechte. Es gibt deshalb einen Serverfehler.

  • Skriptsprachen

    Die folgenden Skriptsprachen stehen zur Verfügung:

    • /bin/sh
    • /bin/bash
    • /bin/csh
    • /usr/bin/perl
    • /usr/bin/php (PHP 7.2)
    • /usr/bin/php71 (PHP 7.1)
    • /usr/bin/php72 (PHP 7.2)
    • /usr/bin/php73 (PHP 7.3)
    • /usr/bin/python (Python 2.6)

  • Error Logfiles

    Die Dateien, die die Fehlermeldungen enthalten, finden Sie auf dem ssh-Server der TUHH ssh.rz.tuhh.de im Verzeichnis /nfs/cgi/htdocs/logs/ .

    Ausserdem sind die Log-Dateien klickbar unter Apache Log-Dateien

  • temp-Verzeichnisse

    Es gibt kein allgemein zugängliches Verzeichnis mit Lese- und Schreibrechten für die Welt. Nur auf Server-Ebene stehen temp-Verzeichnisse zur Verfügung. Diese sind:

    HTTP-Daemon Browser
      /tmp   nicht erreichbar
      /webserver/tmp   nicht erreichbar

Hinweise

Der wichtigste Hinweis gleich zu Beginn: Für die Folgen der Abarbeitung Ihrer CGI-Skripte sind alleine Sie verantwortlich. Bedenken Sie, dass die Skripte im WWW allen zugänglich sind, denen Sie den Zugang erlauben und möglicherweise nicht so genutzt werden, wie Sie dies geplant hatten.

Überlegen Sie sich bei der Weiterverarbeitung von Benutzereingaben ganz genau, welche Aktionen - insbesondere durch die Eingabe von nicht-alphanumerischen Zeichen - ausgelöst werden könnten und fangen Sie unerlaubte Eingaben in Ihrem Skript ab.

Verhindern Sie, dass Ihr Skript von nicht autorisierten HTML-Dokumenten aus ausgerufen wird. Dies erreichen Sie z.B. durch die Auswertung der CGI-Variablen HTTP_REFERER.