Re: [PerlChina] 通过cgi.pm上传文件

cnhack TNT cnhacktnt at gmail.com
Sun Jan 15 06:57:54 PST 2006


hi~黄叶,
     是 -T 的关系,你可以看看 perldoc perlsec 的描述。
解决的方法是去掉 apache 配置文件中的 PerlSwitches -T 及程序首行的 -T 选项。
或者按照 perlsec 里所描述的方法对有污染的存在安全隐患的变量进行清洗,试试增改过的代码:


#!/usr/bin/perl -T
use strict;
use warnings;
use CGI;
use CGI::Carp qw(fatalsToBrowser);

$CGI::DISABLE_UPLOADS = 0;
$CGI::POST_MAX = -1;

my $q = CGI->new;

my $filename = $q->param("file");
#=========Untaint==================
if($filename=~ /^([-\@\w.]+)$/){
 $filename=$1;
}else{
 die "bad $filename\n";
}
#================================
print $q->header("text/html;charset=gb2312");

print $filename;

open OUTPUT, ">upload/$filename" or die "$!";
binmode $filename;
binmode OUTPUT;

my $buffer;

while ( read($filename, $buffer, 1024) ) {
   print OUTPUT $buffer;
}

close(OUTPUT);
-------------- next part --------------
q?????!???,r??m??m???????j+??j)r?j??j?r????:?y?k?!???


More information about the China-pm mailing list