[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