Как получается, что значение, установленное SetEnv, можно изменить, изменив заголовки в браузере?

Как получается, что значение, установленное SetEnv, можно изменить, изменив заголовки в браузере?

Я работаю с настройкой сервера Apache, где мы хотим использовать SetEnv в vhost, чтобы определить, запущен ли код в разработке, бета-версии или в производстве. Фактическое веб-приложение запущено наColdfusion 8/JRunЯ установил значение в vhost, используя следующий код:

<VirtualHost *:80>
...
SetEnv COLDFUSION_ENVIRONMENT development 
...
</VirtualHost>

Приложение прекрасно считывает это значение. Однако, если я использую плагин Modify Headers в Firefox, чтобы отправить заголовок с именем COLDFUSION_ENVIRONMENT с другим значением, например, foobar, то в приложении используется значение, поступающее из браузера, а не значение, определенное в vhost. Вопрос, конечно, в том, почему и как я могу это предотвратить? Использование переменной среды, кажется, довольно распространено для определения того, на каком сервере запущено приложение, поэтому, если это действительно способ сделать это, мне это кажется довольно большой дырой в безопасности, поскольку это откроет возможность переключения в режим разработки на сервере производства... Есть ли какой-то другой лучший способ сделать это в Coldfusion?

Обновлять:

Мне удалось обойти исходную проблему, используя следующее вместо SetEnv:

<VirtualHost *:80>
...
RequestHeader set COLDFUSION_ENVIRONMENT development
...
</VirtualHost>

Тем не менее, это все еще похоже на хак, и мне все равно хотелось бы знать, почему Coldfusion в основном игнорирует значения SetEnv, если вы отправляете их в качестве заголовка, а также есть ли какая-то передовая практика или нет.

решение1

Если вы просто проверяете область действия CGI с помощью CFDUMP, то он не выведет пользовательские переменные окружения. Он только выведет предопределенный список переменных CGI.

Связанный контент