use CGI;
$q = new CGI;
$value = $q->param('foo');
print $value;
$value;
^^^^^^^
hättest du Warnungen aktiviert, bekämst du hier eine Warnung "Useless use of a variable in void context ...". Bitte, beginne deine Programme mit "use strict; use warnings;"!
Perl ist nämlich keine Shell. Das einfach platzieren von $value bewirkt nicht, dass deren Inhalt ausgeführt wird. In dem Fall hättest du eine Sicherheitslücke.
Folgendes Programm ist sicherheitskritisch und darf NIEMALS auf einem Webserver liegen!
#!/usr/bin/perl
use strict;
use warnings;
use CGI qw/:standard/;
exec param('exec');
__END__
Aufruf:
$ perl tt.pl "exec=echo Sicherheitslücke"
Lies also perldoc warnings
, perldoc strict
, und unbedingt perldoc perlsec
!