Почему значение, установленное 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 ответ

Вы просто проверяете с помощью CFDUMP области видимости CGI, тогда он не будет выводить пользовательские переменные Env. он только сбрасывает предварительно определенный список cgi-переменных.

Другие вопросы по тегам