用于cgi bin perl脚本的SetEnv或PassEnv变量

时间:2016-10-20 23:05:16

标签: apache perl cgi

在cgi-bin中有一个apache项目和一个需要从env变量中读取的perl脚本。

在apache配置中使用PassEnvSetEnv,在循环遍历perl中的env变量时,变量不会显示

foreach $key (sort keys(%ENV)) { print "$key = $ENV{$key}<p>"; }

我做错了什么?

1 个答案:

答案 0 :(得分:0)

出于安全原因,Apache的suexec包装器会清除其白名单中未显示的所有环境变量。一般来说,此白名单只包含属于CGI界面的变量:DOCUMENT_ROOTREQUEST_METHODSCRIPT_FILENAME,以及任何以...开头的变量HTTP_(来自HTTP标头)。

不幸的是,这使得SetEnv在启用suexec时基本无用。这是一个已知的限制,但如果不引入潜在的安全漏洞,很难解决。