Я не понимаю сообщение об ошибке режима Perl Taint
У меня есть старый Perl-код, который, как мне сказали, уязвим для межсайтовых скриптовых атак или SQL-инъекций. Я решил, что я включу режим порчи, изменив #!/usr/local/bin/perl
в #!/usr/local/bin/perl -T
и теперь я получаю это сообщение об ошибке:
Insecure dependency in require while running with -T switch at <big long path>/main.cgi line 26.
Код выглядит так:
1 #!/usr/local/bin/perl -T
.
.
.
12 use strict;
13
14 use vars qw( %opt $VERSION );
15
16 use CGI qw/:standard *table start_ul/;
17 use CGI qw(:debug);
18 use CGI::Carp qw( fatalsToBrowser );
19 #use CGI::Pretty qw( :html3 );
20 $CGI::Pretty::INDENT = " ";
21 use Tie::IxHash;
22 use FindBin qw($Bin);
23 use lib "$Bin/../../lib";
24 use lib "$Bin/../lib";
25
26 use Common::Config;
Common::Config имеет следующие права собственности:
$ ls -l lib/Common/Config.pm
-r--r--r--. 1 someguy example 5840 Oct 9 20:08 lib/Common/Config.pm
Я пытался сменить владельца на apache
но я все еще получаю сообщение об ошибке.
ОБНОВИТЬ:
Я пытался развязать мой $Bin
переменная вот так:
use FindBin qw($Bin); # Where are we ?
if ($Bin =~ /^([-\@\w.]+)$/) {
$Bin = $1; # $data now untainted
} else {
die "Bad data in '$Bin'"; # log this somewhere
}
Но я все еще получаю ошибку use Common::Config;
1 ответ
Решение
У вас есть use lib
оператор, где небезопасная переменная добавляется к пути включения?
https://perldoc.perl.org/perlsec.html
Обратите внимание, что если к
@INC
будет сообщено о следующей проблеме:Insecure dependency in require while running with -T switch