Thread Kleine Sprache parsen
(16 answers)
Opened by KCobain at 2011-11-08 16:43
Schnippsel:
Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 sub DRUCKE { eval "print @_"; } my $line = 'DRUCKE 9*2'; my ($befehl,@argumente) = split / /,$line; no strict; &{$befehl}(@argumente); Aber Vorsicht! Du solltest genau prüfen, was in $befehl und @argumente drin steht. Ungeprüfte eval sind gefährlich. Denn wenn anstatt Code (perl): (dl
)
$line = "DRUCKE 9*2"; dann unter Windows Code (perl): (dl
)
$line = 'DRUCKE `type X:\\\tmp\\\passwd`'; oder Linux Code (perl): (dl
)
$line = 'DRUCKE `cat /etc/passwd`'; Und selbst dein programm kann so ausgegeben werden: Code (perl): (dl
)
$line = 'DRUCKE `type "$0"`'; bzw. Code (perl): (dl
)
$line = 'DRUCKE `cat "$0"`'; Du musst selbst definieren, was als Argumenet erlaubt ist udn das notfalls mit Regex matchen. Editiert von GwenDragon: Hinweis auf Sicherheit mit Beispielen Last edited: 2011-11-08 17:29:37 +0100 (CET) |