Moin,
David Haller:
Du willst unbedingt den -T switch verwenden (s. 'man perlrun' und 'man perlsec'):
Ganz sicher will ich den nicht verwenden.
Oh doch. Gerade bei cgis!!!
Oh Nein. Gerade da nicht. ;-) Geben wir dem ganzen mal eine andere Wendung. Ich hatte ja folgendes geschrieben:
Erst durch vorheriges Einfügen von $ENV{'PATH'} = '/bin:/usr/bin:/usr/sbin:/usr/bsd:/usr/local/bin'; ließ sich das Script dann endlich zum funktionieren bewegen.
Das verstehe ich inzwischen, es deckt sich mit einer Anmerkung aus perlsec: Perl automatically enables a set of special security checks, called taint mode, when it detects its program running with differing real and effective user or group IDs. Heisst im Klartext: -T ist per default aktiviert! Deswegen ging mein Script auch nicht auf Anhieb. Die Situation ist die, daß es sich um _ausschliesslich_ meinen Server handelt. Niemand anders packt da Scripte drauf als ich, und jede Einschränkung stört mich. Offenishctlich ist also der Taint-Modus aktiv, und das will ich nicht. Weisst du /jemand, wie man das loswird? Ich will in meinen cgi's einschränkungslos alles amchen können, was ich auch tun kann, wenn ich mich per ssh zu root hochge-su'ed habe.
Eben. Und genau deswegen sollten die cgis sicher programmiert sein, und genau dabei hilft -T (und strict). Sonst kann einer a la Nimda daherkommen und dann als root was ausfuehren...
Das ausbrechen aus dem Pfad (Nimda) verhindert Apache. Die Sicherheit meiner Scripte möchte ich gerne selbst implementieren, ohne daß das System mir Knüppel vor die Füße wirft. Ich bin in der Hinsicht ziemlich geschädigt. Ich habe massenweise Projekte über Bord werfen dürfen, die fast fertig waren, weil sich irgendwann an einer eigentlich nebensächlichen Stelle herausstellte, daß irgendwas, was in der Bash geht, cgis wieder nicht erlaubt ist. Das hört auf. ;-)
use strict;
Ne, das nörgelt mir zuviel an.
Aus gutem Grund!!!
Nö. Variablendeklaration und -initialisierung und dergleichen will ich im 21. Jahrhundert nicht mehr sehen, das hat mein Interpreter/Compiler zu erledigen. Wer einmal BASIC gelernt hat, aus dem wird nix rechtes mehr. ;-) Gruß, Ratti