我不明白Perl污染模式错误信息
我有一些旧的Perl代码,我被告知容易受到跨站点脚本攻击或SQL注入攻击。我想我会通过改变从#!/usr/local/bin/perl
的家当来#!/usr/local/bin/perl -T
打开感染模式,现在我得到这个错误信息:我不明白Perl污染模式错误信息
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;
共同::配置是有这种所有权和权限:
$ ls -l lib/Common/Config.pm
-r--r--r--. 1 someguy example 5840 Oct 9 20:08 lib/Common/Config.pm
我试图改变所有权apache
但是我还是污点错误消息。
UPDATE:
我试图解除污染我$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;
你的污点错误有use lib
statement这里不安全变量是否被添加到包含路径?
https://perldoc.perl.org/perlsec.html
注意,如果一个污点字符串添加到
@INC
,下面的问题将被报告:Insecure dependency in require while running with -T switch
我有'使用lib'。我需要做什么?只是评论这条线会导致问题。 –
@RedCricket它可能是FindBin。你必须去掉'$ Bin'。 – simbabque
我想我不明白如何去掉$ Bin。我已更新的问题,你可以请看看,让我知道我做错了什么? –
我会更新的问题,包括那些行。谢谢。 –