我不明白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;

+0

我会更新的问题,包括那些行。谢谢。 –

你的污点错误有use lib statement这里不安全变量是否被添加到包含路径?

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

注意,如果一个污点字符串添加到@INC,下面的问题将被报告:

Insecure dependency in require while running with -T switch 
+0

我有'使用lib'。我需要做什么?只是评论这条线会导致问题。 –

+0

@RedCricket它可能是FindBin。你必须去掉'$ Bin'。 – simbabque

+0

我想我不明白如何去掉$ Bin。我已更新的问题,你可以请看看,让我知道我做错了什么? –