Michael Schröpl: CGI's und CSS

Beitrag lesen

Fehlermeldung bevor format.css executable: Error 500
Normalerweise sollte zwar ein "Access Denied" kommen, aber diese Fehlermeldung ist besser als keine.

Ich denke, das hängt davon ab, welche Art der CGI-Konfiguration der Server verwendet hat.

"Normalerweise" definiert man das cgi-bin ja so, daß alles darin als CGI-Skript interpretiert wird. Kurz und prägnant, eine Zeile in der Webserver-Konfiguration und fertig. Das hat dann den Effekt, daß der Webserver auch den Zugriff auf die CSS-Datei als CGI-Call auswertet - und da diese Datei kein ausführbares Programm im Sinne des zugrundeliegenden Betriebssystems enthält, wird dieses beim Versuch, die CSS-Datei "auszuführen", einen Returncode ungleich 0 zurückliefern. Den fängt der Webserver auf und setzt ihn in einen "Internen Server-Fehler" (500) um.

Alternativ könnte man innerhalb eines cgi-bin-Verzeichnisses explizit alle Endungen definieren, die als CGI-Skript verstanden werden sollen ("AddHandler" bei Apache). Das ist natürlich mehr Pflegearbeit, weshalb es ein "fauler" Webmaster nicht tut. Es würde allerdings erlauben, das in diese Thread dargestellte CGI-Skript korrekt auszuführen, denn nun könnte der Webserver erkennen, daß die CSS-Datei aufgrund ihrer Endung eben keine CGI-Anwendung sein soll. Ob dann der Zugriff auf solche Dateien erlaubt ist (wie im Falle der CSS-Definition) oder nicht (wie im Falle der password.txt), das wiederum ist durch weitere Definitionen (separater Schutz für letztgenannte Datei) einstellbar.

Es wäre also - bei hinreichend komfortabler Konfiguration des Webservers - kein Problem, innerhalb desselben cgi-bin-Verzeichnisses gemischt Skripte, geschützte Dateien und sonstige Dateien (z. B. CSS oder auch HTML) zu lagern. Man muß es nur definieren - und darf dabei in den dann umfangreicheren Konfigurationsabschnitten den Überblick nicht verlieren, sonst handelt man sich vielleicht doch eine Sicherheitslücke ein.