关于安全 Re: [PerlChina] 通过cgi.pm上传文件

Qiang ( James ) Li shijialee at gmail.com
Sun Jan 15 20:33:27 PST 2006


----- Original Message ----- 
From: "黄叶" <hylinux at gmail.com>
To: <china-pm at pm.org>
Sent: Sunday, January 15, 2006 9:15 AM
Subject: Re: [PerlChina] 通过cgi.pm上传文件


> 另外我还发现一个问题。
> 就是我使用Alias 设定perl目录后。
> mod_perl把这个目录里所有的文件都当成了perl代码。
> 我传入一个jpg格式的图像文件都会被当成perl脚本来解析。我想是不是应该有一个
选项能够改变这种情况。
>
> 也请给位帮帮忙看看。

apache 的设置可能可以做你想要的。但是,从程序设计来说,上传的文件不应该放到
可以被外部执行的地方(或者说,在 apache 可执行目录里应该只放你认可的可执行文
件)。试想,如果我上传了一个搞破坏的 Perl 程序 ( 比如说 email 你的
/etc/passwd 文件给我),那么我就可以从外部来调用这个程序,来做任何运行 apache
的用户可以做的事情。
所以,你应该上传到 /var/tmp 或 /tmp 上传完后对文件也要做适当的检查,你的情况
是看是否图象文件,符合要求的才放到其他目录。

另外,-T 可以帮助你找到程序里可能的安全漏洞,推荐使用。对 -T 提示的错误也一
定要小心处理,很多不安全的程序都是因为对于从外部来的输入不作或作不够的检查而
造成的。 运行 perldoc perlsec ,我建议你把里面的建议仔细学习一下。

Qiang



More information about the China-pm mailing list