Назад | Перейти на главную страницу

Почему значение, установленное 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, если вы отправляете их в качестве заголовка, а также, есть ли передовой опыт или нет.

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