2017-10-16 35 views
0

我有一些舊的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

我會更新的問題,包括那些行。謝謝。 –

回答

4

你的污點錯誤有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。我已更新的問題,你可以請看看,讓我知道我做錯了什麼? –