* Lawrence Furnival <[EMAIL PROTECTED]>
> Here is I am in a loop through multi lines from the copied from the
> clipboard and being feed back one line at a time to the clipboard:
> 
>       system "printf \"$_\" | pbcopy";

Whoa there! The above may allow a nefarious user to run arbitrary
shell commands:

  #!/usr/bin/perl -w
  use strict;

  while (<DATA>) {
    system qq{printf "$_" | pbcopy};
  } 

  __DATA__
  asdf"; touch /tmp/gotcha

With a piped open, there is no security risk, as the shell is not
involved:

  #!/usr/bin/perl -w
  use strict;

  while (<DATA>) {
    open PBCOPY, "|-" or exec 'pbcopy' or die "nuts: errno=$!\n";
    print PBCOPY;
    close PBCOPY;
  } 

  __DATA__
  asdf"; touch /tmp/gotcha

For more information on piped opens and security, consult:

http://sial.org/howto/perl/backticks/

http://perldoc.perl.org/perlipc.html

http://perldoc.perl.org/perlsec.html

Reply via email to