Thread Sicherheit von @ARGV
(43 answers)
Opened by bianca at 2020-01-15 18:01
Die Regex muss das abdecken, was im jeweiligen Anwendungsfall korrekt sein soll.
Wenn Du einen Pfad hast, der nur aus Buchstaben, Zahlen und "/" bestehen kann, dann muss der Regex das einfangen können. Und ich würde in diesem Fall nicht erst $classfile verarbeiten, sondern vorher schon $class sauber machen. Beispiel: Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 package Foo::Bar; use strict; use warnings; use 5.010; our $VERSION = "47.11"; 1; __END__ Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 #! /usr/bin/perl -T -I. use strict; use warnings; use 5.020; #use Getopt::Long; my $class = shift // die "Bitte Klasse angeben.\n"; # $class is tainted; so untaint it if ( $class =~ m|^([a-z0-9]+(?:::[a-z0-9]+)*)$|i ) { $class = $1; } else { die "'untaint' fehlgeschlagen.\n"; } ( my $classfile = $class . ".pm" ) =~ s|::|/|g; require "$classfile"; say $class->VERSION; __END__ Code: (dl
)
1 $ perl -T test_taint.pl Foo::Bar meine Beiträge: I.d.R. alle Angaben ohne Gewähr und auf Linux abgestimmt!
Die Sprache heisst Perl, nicht PERL. - Bitte Crossposts als solche kenntlich machen! View full thread Sicherheit von @ARGV |