Estoy trabajando con una configuración de servidor Apache donde queremos usar SetEnv en el vhost para definir si el código se ejecuta en desarrollo, beta o producción. La aplicación web real se está ejecutando enColdfusion 8/JRun. Establecí el valor en el vhost usando el siguiente código:
<VirtualHost *:80>
...
SetEnv COLDFUSION_ENVIRONMENT development
...
</VirtualHost>
La aplicación lee este valor muy bien. Sin embargo, si uso el complemento Modificar encabezados en Firefox para enviar un encabezado llamado COLDFUSION_ENVIRONMENT con otro valor, por ejemplo foobar, entonces el valor proveniente del navegador se usa en la aplicación, no el valor definido en el vhost. La pregunta, por supuesto, es ¿por qué y cómo puedo evitarlo? Usar una variable de entorno parece ser bastante común para determinar en qué servidor se está ejecutando una aplicación, por lo que si esta es realmente la forma de hacerlo, me parece un agujero de seguridad bastante grande, ya que abriría la opción de cambie al modo de desarrollo en el servidor de producción... ¿Existe alguna otra forma recomendada de hacer esto en Coldfusion?
Actualizar:
Pude solucionar el problema original usando lo siguiente en lugar de SetEnv:
<VirtualHost *:80>
...
RequestHeader set COLDFUSION_ENVIRONMENT development
...
</VirtualHost>
Sin embargo, todavía se siente como un truco y todavía me gustaría saber por qué Coldfusion básicamente ignora los valores de SetEnv si los envía como encabezado y también si existe una mejor práctica o no.
Respuesta1
¿Simplemente está verificando mediante CFDUMP el alcance de CGI? Entonces no generará variables Env personalizadas. solo descarga una lista predefinida de variables cgi.