[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