2017-10-16 12 views
0

私はクロスサイトスクリプティング攻撃またはSQLインジェクション攻撃に対して脆弱であると言われてきた古いPerlコードを持っています。私は#!/usr/local/bin/perl -T#!/usr/local/bin/perlからシェバングを変更することにより、汚染モードをオンにしたいと、今私は、このエラーメッセージが表示されます考え出し:私はPerl Taintモードのエラーメッセージを理解していません

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; 

共通:: 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変数UNTAINTしようとしています:

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文を持っていますか取得します変数はインクルードパスに追加されますか?

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

汚染された文字列が@INCに追加された場合、次のような問題が報告されることに注意してください:

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

私は 'use lib'を持っています。私は何をしなければならないのですか?その行をコメントアウトするだけで問題が発生します。 –

+0

@ RedCricketおそらくFindBinです。あなたは '$ Bin'を手に入れなければなりません。 – simbabque

+0

私は$ Binを取り除く方法を理解していないと思います。私は質問で更新しました。どうぞご覧ください。私が間違っていることを教えてください。 –

関連する問題