[Vienna-pm] Escapen von Shellparametern
Gerfried Fuchs
alfie at ist.org
Mon Apr 28 10:55:59 PDT 2008
Am Montag, den 28.04.2008, 18:20 +0200 schrieb Josef Schmid:
> Stefan Weiss schrieb:
> > @ Gerfried Fuchs und quotemeta:
> > Stimmt natürlich. Ich lasse allerdings mehr Zeichen durch als quotemeta
> > (zB ./+-), u.a. damit das Logfile leserlicher wird.
> >
> > Die Frage ist halt, ob ich damit sicher genug bin.
>
> 1) Hmm, ich würde es als Array system() oder open() übergeben,
> und den *String nur für's Log konstruieren*.
> Besser es ist gar keine Shell dazwischen!
> -> Kann dorthin ¬ ausgebrochen werden.
> -> unabhängiger von OS
Dass bei open("foo |") keine shell dazwischen ist, wage ich stark zu
bezweifeln. Und system() steht hier außer Frage, da man damit die
Ausgabe nicht abfangen kann, was aber explizit gefragt ist.
> 2) quotemeta ist für RE gedacht, müsste man sich durchdenken.
> ala ´´ etc. Adererseits alles mit '' einschliessen, dann
> reicht vielleicht schon "'" => "\'"
> Zumindest ihmo ein besserer Ansatz, wenn schon so sein muss,
> wo ich aber bei deinem Bsp. überhaupt keine Notwendigkeit seh.
aus perldoc -f quotemeta: "Returns the value of EXPR with all
non-"word" characters backslashed. (That is, all characters not matching
"/[A-Za-z_0-9]/" will be preceded by a backslash in the returned string,
regardless of any locale settings.)" - genügt dir das zum
Durchdenken? :)
> 3) Offensichtlich handelt es sich bei $from und $num
> um speziellere Datentypen, deshalb sollte auch eingeschränkter
> geprüft werden: z.B. $num nur erlaubt wenn !/\D/
> Möglicherweise gefällt Dir eins der unzähligen Validierungs-
> module auf CPAN.
Hier bin ich absolut bei dir. Es macht immer Sinn, die Usereingaben
vorher schon auf Sinnhaftigkeit zu testen.
> 4) wenn schon unsicher, dann so dass man jemand anderen die
> Schuld zuschieben kann. ;-)
> use Shell;
"This package is included as a show case, illustrating a few Perl
features. It shouldn’t be used for production programs." - sehr
überzeugend. :)
Bis dann,
Rhonda
More information about the Vienna-pm
mailing list