¿Por qué la gente pone un archivo .env para almacenar todos sus secretos en un servidor? Si alguien lo piratea, ¿no es el .env igualmente accesible que todos los demás archivos? ¡Gracias!
Tiene razón en que el almacenamiento de secretos ambientales en un archivo .env presenta el riesgo de que los secretos de texto sin formato queden expuestos a un tercero si obtienen acceso al código sin formato.
Al igual que otras áreas con material confidencial, hay formas de sortear esto, generalmente un enfoque que las personas podrían tomar para usar un sistema de administración de secretos que en su lugar reemplaza los valores de secretos de un archivo .env al que se accede a través de una solicitud validada.
AWS admite un par de servicios oficiales que pueden hacer esto:
Además, existen otros servicios como Hashicorp Vault que brindan una funcionalidad similar.
Para la configuración ambiental, un archivo .env aún puede ser apropiado, es decir, habilite este indicador de función, pero si desea intentar reducir el radio de explosión de su aplicación, el almacenamiento de secretos fuera de un archivo de texto sin formato ayudará a reducir este riesgo.
Esa no es la razón principal para usar variables de entorno. Sin embargo, también es lo suficientemente seguro para guardar valores secretos, especialmente cuando se combinan con métodos hash.
Las variables de entorno son más útiles en el nivel de producción real de la programación. Su aplicación debe tener diferentes entornos para ejecutarse. Desarrollo: que su host es local y, como desarrollador, necesita probar su código y establecer la variable de depuración en verdadero para obtener errores con estado, lo cual no es algo que desee en el entorno de producción. Producción: que tu host es tu dominio o servidor IP y necesitas un middleware diferente al de la etapa de desarrollo. También hay entornos de ensayo y prueba para proyectos más grandes. Podría haber muchas cosas que deberían manejarse de manera diferente en diferentes entornos: la base de datos es un gran ejemplo. Además, las variables de entorno son útiles cuando hay más de una persona trabajando con el código base y las personas pueden configurar el proyecto en función de su máquina/SO utilizando variables de entorno.