电子商务方案 全易网上商店 去看看>> 妙搜·生活信息搜索引擎·全国61城市公交查询好站二百五·个人门户

全易因特网软件-->为您提供专业CGI软件,按此进入联系合作…… 关于CGI安全  加入网站挣钱
 免费登录搜索引擎
请按 CTRL+D
添加到收藏夹
站点导航 CGI支持论坛 好易CGI工厂  用户列表  联系合作 资源库导航 <=返回 × 关闭

全易因特网软件


好易CGI工厂

 
全易网上商店
虚拟域名系统 [ok]
在线定单处理 [ok]
邮件列表管家 [ok]
域名注册系统 [ok]
全易数据库 [ok]
 
产品支持
订购产品
意见反馈
联系合作
友情链结
网络安全
CGI资源 免费资源
CGI支持论坛 精华
CGI资源站
SSI全攻略
给我写信
最新免费主机
PERL工具集
CGI安装指南

合作网站

好站二百五个人门户

妙搜·生活信息搜索
IP地址归属地查询
公交线路及换乘查询
手机号归属地查询
身份证信息查询检验
生日密码信息查询
 

5.0 - 安全


Q5.1: 以 Perl 写成的 CGI 程式是不是不如以 shell 或 C 写的来得安全?

这个问题的答案是: CGI 程式先天上就不安全,不管它是用那个语言写成的*。

【译者】WWW 及
CGI 操作安全 FAQ 中问题第 31 对此有深入的探讨。


Q5.2:我该特别留意哪些安全事项?

绝对不要对 shell 暴露任何 form 资料。底下这几项通通都是安全漏洞:

  • open(COMMAND, "/usr/ucb/finger $form_user");
  • system("/usr/ucb/finger $form_user");
  • @data = `usr/ucb/finger $form_user`;

话虽如此,在上面的第二种写法中,系统安全可藉着改变参数传送的方式而得以改 善。也就是将参数由字串方式传送 (shell 会先解译),改为序列方式传送。

system("/usr/ucb/finger", $form_user);

您同时应该阅读:


Q5.3:为什麽大家都说
http://bigidiot.abuse-me.com/perl.exe?foo.pl 这样很危险?会有多糟?

极度危险! 想想看如果我这麽做会发生什麽事:

http://bigidiot.abuse-me.com/cgi-bin/perl.exe?-e+'format:%20c'

现在您同意了吧?避免这个恶梦发生的方法:

  • 将 perl.exe 执行档由 ``cgi-bin'' 移到 server 根目录以外的目录里去。
  • 在 ``cgi-bin'' 里用批次档 (batch) script 来叫出您的 CGI script。

以下是一例。假设您的 CGI script 叫做 ``sample.pl'' 而您的批次档叫 ``simple.bat'':

@echo off
c:\dos_perl\perl.exe c:\netscape\ns-home\docs\cgi-bin\simple.pl

现在,您可以做:

<A HREF="/cgi-bin/simple.bat">Click Here</A>


Q5.4:要如何在程式中安全地使用逆向撇号 (backticks,"`",位於键盘左上角)?这麽做:
@ans = `grep'$user_field' some.file`;
是不是真的不安全?

是的! 这非常危险!试想,如果 $user_field 含有这样的内容会有什麽後 果:

; rm -fr / ;

要达到相同的效果,一个比较安全的做法是*:

if (open GREP, "-|") {
    @ans = <GREP>;
} else {
    exec("/usr/local/bin/grep", $user_field, "some.file")
        || die "Error exec'ing command", "\n";
}

close GREP;
【译者】 如果读者对以上 open GREP, "-|"部份的句法有疑问,可以
参阅 perlipc manpages 中 Safe Pipe Opens一节的说明。


Q5.5: /$user_variable/ 这个句法是不是 Perl 5 中的一个安全漏洞?

不!这不是个安全漏洞。但是如果您用 eval 指令在执行期 (runtime) 去 评估这个叙述,那麽,它会变成一个安全死角。例如这种做法可能很危险:

foreach $regexp (@all_regexps) {
    eval "foreach (\@data) { push(\@matches, \$_) if m|$regexp|o; }";
}
 
[ 返回页首 ] 更新于:2005/07/09
联系我们 通过QQ在线与客服人员交流
1998-2005 Copyright© 全易因特网软件 版权所有
好站二百五·网站指南 合作网站
京ICP备05009694号