[Vienna-pm] Escapen von Shellparametern

Stefan Weiss spaceman at foo.at
Mon Apr 28 10:24:17 PDT 2008


On 2008-04-28 18:20, Josef Schmid wrote:
> 1) Hmm, ich würde es als Array system() oder open() übergeben,

system() geht nicht, weil ich den Output lese möchte.

open(): Das war mir noch gar nicht bekannt, dass das überhaupt 
unterstützt wird. Das könnte eine wirklich interessante Lösung sein. Ist 
das ein neueres Feature?

> 2) quotemeta ist für RE gedacht, müsste man sich durchdenken.
>     ala ´´ etc. Adererseits alles mit '' einschliessen, dann
>     reicht vielleicht schon "'" => "\'"

Zeichen in quoted-Strings zu escapen (gerade ' und ") ist in der Bash 
umständlicher als ohne Quotes. Probier mal
     echo 'foo\'bar'
(und dann echo 'foo'"'"'bar')

> 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.

Das funktioniert nur für einfache Parameter. Was ich validieren kann, 
habe ich validiert. Sobald man aber einen user-definierten Textinhalt 
mitgeben möchte, muss man trotzdem richtig escapen.

> 4) wenn schon unsicher, dann so dass man jemand anderen die
>     Schuld zuschieben kann. ;-)
>     use Shell;

Auch interessant, habe ich auch noch nicht gekannt. Lohnt sich ja doch, 
zur Sicherheit auf der vienna.pm Liste nachzufragen =)

Wobei mich die Manpage von Shell.pm ein bißchen abschreckt:

  | This package is included as a show case, illustrating a few Perl
  | features. It shouldn’t be used for production programs.

Ich nehme an, es wird schon richtig funktionieren, aber wenn nicht, und 
jemand diese Passage liest, bekomm erst recht wieder ich eine auf den 
Deckel :-)


Danke,
Stefan


-- 
LOAD"Ph'nglui mglw'nafh Cthulhu R'lyeh wgah'nagl fhtagn!",8,1
RUN!



More information about the Vienna-pm mailing list