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

2

Estou trabalhando com uma configuração do servidor Apache onde queremos usar o SetEnv no vhost para definir se o código está sendo executado em desenvolvimento, beta ou produção. O aplicativo da Web real está sendo executado no Coldfusion 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 bem. No entanto, se eu usar o plug-in 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 é usado no aplicativo, 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á rodando, então se essa for a maneira de fazê-lo, parece uma grande falha de segurança para mim, já que abriria a opção mudar para o modo de desenvolvimento no servidor de produções ... Existe alguma outra forma de melhor prática para fazer isso no Coldfusion?

Atualização:

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

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

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

    
por Jens Wegar 27.08.2012 / 16:02

1 resposta

2

Você está simplesmente verificando pelo CFDUMP do escopo do CGI, então ele não produzirá vars Env customizadas. ele apenas copia uma lista pré-definida de cgi vars.

    
por 04.12.2012 / 10:56