私はApacheサーバーの設定で作業しており、仮想ホストでSetEnvを使用して、コードが開発、ベータ、または本番のいずれで実行されているかを定義したいと考えています。実際のWebアプリケーションはコールドフュージョン 8/JRun次のコードを使用して、vhost に値を設定しました。
<VirtualHost *:80>
...
SetEnv COLDFUSION_ENVIRONMENT development
...
</VirtualHost>
アプリはこの値を問題なく読み取ります。ただし、Firefox のヘッダー変更プラグインを使用して、COLDFUSION_ENVIRONMENT というヘッダーを別の値 (例: foobar) とともに送信すると、アプリケーションではブラウザーからの値が使用され、vhost で定義された値は使用されません。当然、問題は、なぜ、どうすればこれを防ぐことができるかということです。環境変数を使用して、アプリがどのサーバー上で実行されているかを判断するのはかなり一般的なようです。そのため、これが実際に実行方法である場合、実稼働サーバー上で開発モードに切り替えるオプションが開かれるため、かなり大きなセキュリティ ホールのように思えます... Coldfusion でこれを行うための他のベスト プラクティスの方法はありますか?
アップデート:
SetEnv の代わりに以下を使用することで、元の問題を回避できました。
<VirtualHost *:80>
...
RequestHeader set COLDFUSION_ENVIRONMENT development
...
</VirtualHost>
しかし、それはまだハックのように感じられ、ヘッダーとして送信した場合に Coldfusion が基本的に SetEnv 値を無視する理由と、ベスト プラクティスがあるかどうかを知りたいと思います。
答え1
CGI スコープの CFDUMP で単にチェックしているだけであれば、カスタム Env 変数は出力されません。事前に定義された CGI 変数のリストのみがダンプされます。