2016-10-20 14 views
-1

env変数から読み取る必要のあるapacheプロジェクトとperlスクリプトがcgi-binにあります。cgi bin perlスクリプト用のSetEnvまたはPassEnv変数

perlの私が間違っているのは何

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

にENV変数をループする際の変数は表示されませんApacheの設定でPassEnvまたはSetEnvを使用していますか?

+0

私のために働きます。 Apacheの設定を表示するのに役立つかもしれません。 – ThisSuitIsBlackNot

答えて

0

セキュリティ上の理由から、Apacheのsuexecラッパーは、ホワイトリストに表示されないすべての環境変数をクリアします。一般に、このホワイトリストには、DOCUMENT_ROOT,REQUEST_METHODSCRIPT_FILENAMEなどなどの変数だけでなく、HTTP_(HTTPヘッダーから)で始まる変数も含まれます。

suexecが有効な場合、SetEnvは基本的に役に立たなくなります。これは既知の制限ですが、潜在的なセキュリティ上の脆弱性を導入することなく解決することは困難です。

+0

OPはどこで彼はsuexecを使用していると言いますか? SetEnvはそれなしでうまく動作します。 – ThisSuitIsBlackNot

+0

これは最高の推測です。 suexecは、多くのWebサーバー構成ではデフォルトでオンになっており、環境変数が欠落している理由をきちんと説明しています。 – duskwuff

関連する問題