wie sieht der Befehl aus, wenn ich in einer HTML-Seite einen Link auf ein Perl-Script habe, was eine Text-Datei öffnet und ich den Namen der Text-Datei als Parameter übergeben will.
Falls das nicht möglich sein sollte, was gibt es noch für Möglichkeiten?
im Perl Script kannst Du dann die Datei über die Variable $ENV{‚QUERY_STRING‘} abfragen… pass aber auf, dass Du damit nicht Hackern Tür und Tor öffnest. Du solltest beschränken welche Verzeichnisse geöffnet werden dürfen usw… auch solltest Du sowas verhindern: http://www.server.de/cgi-bin/script.cgi?../…/…/…/…
Das ist falsch. Man muß immer Name/Wert-Paare definieren.
Also ?datei=datei.txt
im Perl Script kannst Du dann die Datei über die Variable
$ENV{‚QUERY_STRING‘} abfragen… pass aber auf, dass Du damit
nicht Hackern Tür und Tor öffnest. Du solltest beschränken
welche Verzeichnisse geöffnet werden dürfen usw… auch
solltest Du sowas verhindern:
Auch das ist nicht optimal. Für CGI benutzte man IMMER das Modul CGI.pm, oder, wenn man nur die Anfragefunktionen nutzen will, CGI::Request. Das filtert alle „Nettigkeiten“ aus dem Query-String und kopiert nebenbei auch alle Eingabedaten in einen hash.
Bsp:
use CGI;
my $q=new CGI;
foreach $l ($q-\>param) { print $l.' = '.$q-\>param($l)."\n"; }
Dies druckt alle Parameter in Name/Wert-Paaren auf STDOUT.
Das ist falsch. Man muß immer Name/Wert-Paare definieren.
Also ?datei=datei.txt
bloedfug. muss man nicht.
Auch das ist nicht optimal. Für CGI benutzte man IMMER das
Modul CGI.pm, oder, wenn man nur die Anfragefunktionen nutzen
will, CGI::Request. Das filtert alle „Nettigkeiten“ aus dem
Query-String und kopiert nebenbei auch alle Eingabedaten in
einen hash.
Ist einfach und recht sicher ja. aber es geht auch ohne. und weil ich weiss, das es mit der ungefilterten QUERY_STRING Sicherheitsprobleme geben kann, habe ich das auch dazugeschrieben. ABER:
Je nachdem was er da macht, kann das auch über die QUERY_STRING sicher gehen, bzw. mit ein paar einfachen Rewrites u.ä. sicher gemacht werden.
Du scheinst nicht ganz verstanden haben, was ich damit sagen wollte. Wenn Du ein Script baust, mit dem man Textdateien an den Browser schickt, und den Pfad / Dateinamen als Parameter übergibt, muss man dafür Sorge tragen, dass auch nur die Dateien angezeigt werdne können, die gewollt sind. Sonst kann man (z.B. über eine Konstruktion wie die obige) sich Datein anzeigen lassen, die sicher nicht angezeigt werden sollten…
Un da hilft dir auch kein CGI Modul.
Das ist falsch. Man muß immer Name/Wert-Paare definieren.
Also ?datei=datei.txt
bloedfug. muss man nicht.
ok du hast recht. sollte man aber. ist in meinen Augen einfach „runder“. Ansonsten hast du ja eine Variable ohne Wert.
[…]
Ist einfach und recht sicher ja. aber es geht auch ohne. und
weil ich weiss, das es mit der ungefilterten QUERY_STRING
Sicherheitsprobleme geben kann, habe ich das auch
dazugeschrieben. ABER:
Je nachdem was er da macht, kann das auch über die
QUERY_STRING sicher gehen, bzw. mit ein paar einfachen
Rewrites u.ä. sicher gemacht werden.
Du scheinst nicht ganz verstanden haben, was ich damit sagen
wollte. Wenn Du ein Script baust, mit dem man Textdateien an
den Browser schickt, und den Pfad / Dateinamen als Parameter
übergibt, muss man dafür Sorge tragen, dass auch nur die
Dateien angezeigt werdne können, die gewollt sind. Sonst kann
man (z.B. über eine Konstruktion wie die obige) sich Datein
anzeigen lassen, die sicher nicht angezeigt werden sollten…
Un da hilft dir auch kein CGI Modul.
Ja klar. Aber du hast auch was nicht verstanden (glaub ich). Ich denke es ging dem Mann mehr um die ART der Parameterübergabe mit (link?..&…&:wink: