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.