Installation eigener CGI-Skripte
Wider besseres Wissen haben wir uns durchgerungen es doch einmal mit
Skripten für Studenten zu versuchen. Dieser Service ist experimentell,
und wird eingestellt, sobald wir irgendwelche negativen Erfahrungen
damit machen.
Was ist ein CGI-Skript
Skript ist in diesem Zusammenhang etwas irreführend. Tatsächlich
handelt es sich um irgendein Programm, dem die Parameter vom Webserver
in einer bestimmten Form übergeben werden, eben dem "Common Gateway
Interface".
Common Gateway
Interface - CGI/1.1
Was gilt es zu beachten
Die CGI-Skripte werden bei uns mit den Rechten der jeweiligen
Benutzerkennung ausgeführt, und können dort zum Beispiel den Mailfolder auslesen oder
Dateien löschen. Wer ein solches Skript betreibt, handelt sich also
leicht Sicherheitsprobleme ein.
Allgemein muß man verhindern, daß irgendwelche Eingaben,
insbesondere auch böswillig geplante, einen unerwünschten Effekt
haben. Dieses Skript zum (zugegebenermaßen trivialen) Beispiel
#!/bin/sh
echo your input was $USER_INPUT
wirkt mit der richtigen Eingabe wie ein ls auf beliebigen Verzeichnissen.
Von Shellskripten ist generell abzuraten, da schon kleine Skripte sehr
schwierig narrensicher zu gestalten sind. Explizite Skriptsprachen wie
Tcl oder Perl sind da schon einfacher handzuhaben, besonders an die
"tainted" Option von Perl sei an dieser Stelle erinnert.
Fehler in Binarys sind meist nur sehr schwierig auszunutzen (abgesehen
von system(user_input) ;-), sie können daher als verhältsismäßig
sicher gelten.
The World Wide Web
Security FAQ: 6. CGI (Server) Scripts
Wie geht's bei uns
Dateien im Verzeichnis .public_html/cgi-bin einer Benutzerkennung
werden vom Webserver nicht angezeigt, sondern ausgeführt. Da sie mit den
Rechten des jeweiligen Benutzers ausgeführt werden, müssen sie nicht
für andere les- oder ausführbar sein. Der Inhalt des cgi-bin
Verzeichnis wird auch nicht vom Server aufgelistet.
Um einige grundlegende Sicherheitslücken zu schließen verwenden wir
einen CGI-Wrapper, der unter anderem prüft, ob cgi-bin oder das
Skript darin für andere schreibbar ist, oder ob es sich um symbolische
Links handelt. Ist das der Fall, wird das Skript nicht ausgeführt.
CGI Programming FAQ
TeamOne SELFHTML
Fragen und Anregungen kann man wie üblich an
Public richten.
Ergänzt am 5.6.2000 (Robert)
Public (public@rbg.informatik.tu-darmstadt.de)