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
を使用していますか?
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
を使用していますか?
セキュリティ上の理由から、Apacheのsuexecラッパーは、ホワイトリストに表示されないすべての環境変数をクリアします。一般に、このホワイトリストには、DOCUMENT_ROOT
,REQUEST_METHOD
、SCRIPT_FILENAME
、などなどの変数だけでなく、HTTP_
(HTTPヘッダーから)で始まる変数も含まれます。
suexecが有効な場合、SetEnv
は基本的に役に立たなくなります。これは既知の制限ですが、潜在的なセキュリティ上の脆弱性を導入することなく解決することは困難です。
OPはどこで彼はsuexecを使用していると言いますか? SetEnvはそれなしでうまく動作します。 – ThisSuitIsBlackNot
これは最高の推測です。 suexecは、多くのWebサーバー構成ではデフォルトでオンになっており、環境変数が欠落している理由をきちんと説明しています。 – duskwuff
私のために働きます。 Apacheの設定を表示するのに役立つかもしれません。 – ThisSuitIsBlackNot