Checkliste für CGI-Skripte

UNIX - Windows Unterschiede

Im CGI-Skript muß bei beiden Betriebssystemen der richtige Pfad zum Perlinterpreter eingetragen sein! Bei UNIX-Betriebssystemen ist die übliche Syntax mit dem Pfad zum Perlinterpreter zu verwenden während beim Windows-Betriebssystem nicht auf den Laufwerksbuchstaben vergessen werden darf. Im folgenden sind gültige erste Zeilen aufgelistet. Bei Windows-Betriebssystemen kann man sowohl Slashes als auch Backslashes verwenden:

UNIX Windows
Tabelle 1
#!/usr/bin/perl -wT #!C:\Perl\bin\perl.exe -wT
#!C:/Perl/bin/perl.exe -wT
#!C:/Perl/bin/perl -wT

Dateirechte

Dateirechte für das Verzeichnis

Das Verzeichnis in dem die CGI-Skripte stehen, sollte für Andere nur «ausführbar» sein:

drwx--x--x    2 user    user        4096 Okt  6 12:18 cgi-bin

chmod 711 cgi-bin

Dateirechte für die CGI-Datei

Die CGI-Datei muß für Andere «ausführbar» und «lesbar» sein:

-rwxr-xr-x    1 user    user         302 Okt  6 11:08 Dateiname

chmod 755 Dateiname

Benötigte Deklarationen

Taint-Modus

Der Taint-Modus verhindert, daß sämtliche Daten von außerhalb (z.B.Benutzereingaben oder auch Umgebungsvariablen) unsichere Dinge anstellen (Benutzerdaten könnnen nicht in einer eval-Anweisung benutzt werden, oder an die Shell weitergegeben werden) können. Der Taint-Modus wird bei Perl durch die Option -T aktiviert:

#!/usr/bin/per -wT

Sicherheit im Modul CGI.pm

Was aus Gründen der Sicherheit immer in einem CGI-Skript stehen sollte ist folgendes:

use CGI;

$CGI::DISABLE_UPLOADS = 1;
$CGI::POST_MAX        = 102_400;         # 100 KB

my $q    = new CGI;

Alternativ könnte man diese Änderungen auch im Modul CGI.pm durchgeführt werden, aber das funktioniert nur, wenn man Schreibzugriff auf das Modul hat.