¿Por qué usar .ENV? ¿Qué hay de malo en almacenar secretos en un archivo config.php fuera del directorio raíz?

2

Parece ser que la práctica general en estos días es almacenar secretos (por ejemplo, DB, credenciales de API) en un archivo .ENV y luego cargarlo a $_ENV y $_SERVER automáticamente. Esta biblioteca popular hace eso y es incluso alentada como mejor practica Esta biblioteca lo lleva un paso más allá y cifra el valor dentro del archivo .ENV .

Dicen que todo el propósito es administrar fácilmente las configuraciones de desarrollo / producción y minimizar los archivos de configuración que se envían al control de versiones. Además de "nunca almacenar credenciales confidenciales en su código".

Un problema evidente sobre esto es una simple inyección de print_r($_SERVER) o print_r($_ENV) en su código lo revelará todo. O, si olvidó eliminar phpinfo.php , ¡todo se pierde! También hay otras formas en que podría filtrarse (por ejemplo, los registros).

Estoy bastante desconcertado de que esta práctica sea frecuente o tal vez solo me esté perdiendo algo.

¿Hay algún error en particular con el antiguo antiguo config.php almacenado fuera de la raíz del documento? Quiero decir que podrías poner eso en git ignore y no va a ser parte de tu código en absoluto. Incluso puedes cifrarlo también. ¿Por qué usar .ENV ?

Actualización:

Aquí hay un artículo que está de acuerdo con mis sentimientos

    
pregunta IMB 06.12.2018 - 16:42
fuente

1 respuesta

0

No hay problemas inherentes desde una perspectiva de seguridad

Si su aplicación o su servidor están comprometidos, es probable que el atacante pueda leer todo en la configuración, incluidos datos confidenciales como contraseñas, tokens o cadenas de conexión. Esto es cierto si utiliza archivos de configuración o variables de entorno.

Si alguna vez sospechaste un compromiso, deberías limpiar / restablecer tus secretos independientemente de si tu configuración está almacenada en archivos o variables de entorno.

Razones prácticas

El artículo que ha vinculado como explicación ofrece razones prácticas para usar variables de entorno.

Según su recomendación, este enfoque reduce el riesgo de: confusiones incorrectas (específicamente, aquellas que contienen datos de configuración), implementaciones mal configuradas y malas prácticas de desarrollo.

En la medida en que su recomendación evite malos comportamientos de seguridad, es mejor seguirla. Los fallos de seguridad se deben a errores humanos durante la implementación / mantenimiento, así como a errores de software. Si un proceso automatizado o un hábito previene un problema, es lo correcto.

    
respondido por el DoubleD 06.12.2018 - 17:21
fuente

Lea otras preguntas en las etiquetas