¿Por qué almacenamos la clave dentro del archivo .env?
Si un pirata informático logra acceder a los archivos en el servidor y si puede leer TODOS los archivos, incluidos todos los archivos PHP y .ENV, entonces es irrelevante almacenar la clave separada dentro del archivo .env porque el pirata informático podría lea el archivo .env también.
Entonces, ¿por qué no almacenamos la sal dentro de PHP, donde generamos el hash?
Por cierto, ahora estoy aprendiendo Codeigniter. (Tiene un archivo .env, donde se almacenan estas cosas)
Respuesta corta: es más fácil mantener un archivo seguro que un archivo o repositorio de código fuente completo.
Es cierto: si un pirata informático ingresa al servidor, no importa dónde almacene los datos. Es probable que obtengan acceso de root o al menos obtengan acceso a lo que sea que la aplicación tenga acceso, incluidas bases de datos, archivos env, etc.
Hay algunas razones para guardar secretos en un archivo diferente al de su código fuente.
env es local en el lugar donde se implementa el software. Es posible que admita muchos entornos. Incluso tan simple como el desarrollo y la producción local.
El código fuente generalmente se almacena en algo como github donde registra los archivos. Incluso si no, generalmente hay varias copias de los archivos fuente. A través de computadoras, correo electrónico o Dropbox.
Más copias de la fuente significan que más personas tienen acceso al código fuente. Más oportunidades para que ese código fuente termine en las manos equivocadas. El código fuente es menos seguro que el archivo env en el servidor.
Por lo general, es más fácil mantener seguro un archivo que está fuera del código fuente. Por ejemplo, encriptamos grandes cantidades de datos usando una clave simétrica. Sabemos que debemos mantener la clave en secreto, pero estamos menos preocupados por los datos cifrados. Podemos replicar datos cifrados en centros de datos separados geográficamente sin preocuparnos por los protocolos de tránsito porque sabemos que solo necesitamos mantener la clave segura.
Es similar con el archivo env: es lo único que necesita mantener en un nivel de seguridad más alto para que pueda compartir más libremente el código fuente con un equipo. Si le preocupaba tener material de tipo credencial en el código fuente, entonces usted (o su equipo de seguridad) dudaría mucho más en compartir el código, lo que afectaría su capacidad para generar valor comercial.