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.