¿Cómo evito exponer nombres de usuario y contraseñas de MySQL en código PHP al establecer una conexión?
¿Cómo evito exponer nombres de usuario y contraseñas de MySQL en código PHP al establecer una conexión?
Nunca es una buena idea almacenar contraseñas en el código fuente. El código fuente tiene la horrible tendencia de hacerse público. Esto puede ocurrir por una exposición en su sistema de control de versiones (google aws key github
para leer algunas historias de horror), usted comparte el código fuente con alguien, pero en su configuración de PHP sirve su código fuente, etc ...
Además, debería poder cambiar su contraseña en un horario independiente a partir de las actualizaciones del código fuente. Algo que los almacena en el mismo archivo evita.
En su lugar, ponga la contraseña en un archivo de configuración. Este archivo debe estar fuera de la raíz web para reducir la posibilidad de que se le envíe al usuario de forma incorrecta. Asegúrelo con los permisos apropiados del sistema operativo. Puede pasar la contraseña a su PHP a través de una variable de entorno.
Hanky 웃 Panky trae buenos puntos. Sin embargo, me gustaría añadirles:
SELECT
para esa cuenta en particular evitará que se ejecute cualquier otra cosa. Esto no funciona si tiene una cuenta para cada: SELECT
, UPDATE
, INSERT
, DELETE
, ya que un atacante podría combinar los privilegios y causar un daño grave. Solo aquellos con acceso root / admin / shell a su sitio web pueden obtener el nombre de usuario y las contraseñas, a menos que haya modificado los archivos de forma incorrecta. Si alguno de ellos es cierto, tiene problemas mucho más grandes que tener que conocer / pasar su usuario de MySQL.
La respuesta típica es: almacenarlos en archivos de configuración porque los archivos de código a menudo se publican. Una nueva tendencia parece ser almacenarla en variables de entorno, si puede controlarlas al iniciar el servidor. En el alojamiento compartido, este no es el caso, y luego los archivos de configuración son una buena opción. Después de todo, una vez que alguien llega a su sistema de archivos, también puede cambiar su código fuente y, por lo tanto, hacer cualquier cosa.