【发布时间】:2010-12-15 16:20:56
【问题描述】:
我有以下代码,但我认为我需要清理环境变量,但我不确定应该如何清理它们。我意识到我可以对它们进行消毒的程度可能是有限的,但我能做什么?
#!/usr/bin/perl
use 5.012;
use warnings;
use autodie;
use Env qw( EDITOR VISUAL );
use File::Temp qw( :seekable );
my $editor = '/usr/bin/nano';
if ( $VISUAL ) {
$editor = $VISUAL;
}
elsif ( $EDITOR ) {
$editor = $EDITOR;
} else {
warn 'set VISUAL and EDITOR env variables not set falling back to nano'
. "\n";
}
my $tmpf = File::Temp->new;
system $editor, $tmpf->filename;
open $tmpf, '<', $tmpf->filename;
print while ( <$tmpf> );
【问题讨论】:
-
看看perlsec,它告诉你“污染”模式。污染模式会将来自程序外部环境的任何数据标记为污染。受污染的数据在不被清除的情况下无法写回环境。例如,如果“EDITOR”设置为“rm -rf /& #”会怎样?
标签: perl environment-variables sanitization taint-checking