Como o valor definido por SetEnv pode ser alterado modificando os cabeçalhos no navegador

Como o valor definido por SetEnv pode ser alterado modificando os cabeçalhos no navegador

Estou trabalhando com uma configuração de servidor Apache onde queremos usar SetEnv no vhost para definir se o código está rodando em desenvolvimento, beta ou produção. O aplicativo da web real está sendo executado emColdfusion 8/JRun. Eu configurei o valor no vhost usando o seguinte código:

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

O aplicativo lê esse valor perfeitamente. Porém, se eu usar o plugin Modify Headers no Firefox para enviar um cabeçalho chamado COLDFUSION_ENVIRONMENT com outro valor, por exemplo, foobar, então o valor vindo do navegador será usado na aplicação, não o valor definido no vhost. A questão, claro, é por que e como posso evitar isso? Usar uma variável de ambiente parece ser bastante comum para determinar em qual servidor um aplicativo está sendo executado, então, se essa for realmente a maneira de fazer isso, parece uma grande falha de segurança para mim, pois abriria a opção para mude para o modo de desenvolvimento no servidor de produção... Existe alguma outra maneira de fazer isso no Coldfusion?

Atualizar:

Consegui contornar o problema original usando o seguinte em vez de SetEnv:

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

No entanto, ainda parece um hack e eu ainda gostaria de saber por que o Coldfusion está basicamente ignorando os valores SetEnv se você os enviar como cabeçalho e também se há uma prática recomendada ou não.

Responder1

Você está simplesmente verificando pelo CFDUMP o escopo CGI, então ele não produzirá Env vars personalizados. ele apenas despeja uma lista predefinida de vars cgi.

informação relacionada