Marco Dieckhoff schrieb:
On Wed, Nov 29, 2000 at 15:21 +0100, Daniel Heemann wrote:
wie kann man aus einem Perl-Skript ein anderes Programm oder Skript (nicht Perl) aufrufen?
system("programm parameter");
oltle man nicht tun, da Perl bei einem system aufruf mit nur einem Parameter diesen auf shellmetacharaktere prüft und falls vorhanden den gesamten String als Befehl an die shell zurückgibt.
system("programm", "parameter");
ist besser, da hier nur der string "programm" an die shell übergeben und ausgeführt wird, der Rest wird als Parameter zu "programm" übergeben.
$ausgabe = `programm parameter`; Backticks, neben dem ß
auch hier wird der string innerhalb der backticks komplett an die shell übergeben und dass skript ist angreifbar. Fazit: system("programm parameter"); sollte man sich besser erst gar nciht angewöhnen system("programm", "parameter"); verinngert schonmal die angreifende Fläche `programm parameter`; sollte man auch mit keiner irgendwie gearteten Form von user input verbinden. Generell ist zu sagen wenn man ein Perl-skript schreibt dass halbwegs sicher sein soll, sollte man die Kombination User-Input & Shell meiden wie die Pest. Und falls sie doch nötig sein sollte den UserInput lieber dreimal checken ob er korrekt ist. hth Daniel "Fengor" Brachmann --------------------------------------------------------------------- To unsubscribe, e-mail: suse-linux-unsubscribe@suse.com For additional commands, e-mail: suse-linux-help@suse.com