contraseñas de usuario de MySQL en PHP

4

¿Cómo evito exponer nombres de usuario y contraseñas de MySQL en código PHP al establecer una conexión?

    
pregunta Fabian Grunge 16.01.2016 - 15:17
fuente

3 respuestas

1

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.

    
respondido por el Neil Smithline 16.01.2016 - 22:08
fuente
1

Hanky 웃 Panky trae buenos puntos. Sin embargo, me gustaría añadirles:

  1. Puede mitigar los daños al restringir las cuentas de conexión por roles. Digamos que solo permites buscar en tu sitio web. Permitir solo las declaraciones 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.
  2. También puede denegar a cualquier persona que no tenga acceso de administrador adecuado al sitio web, cuyo inicio de sesión probablemente sea independiente del host web. Basado en IP negar todo, permitir desde, por ejemplo. Tenga en cuenta que esto no lo protegerá completamente si ha sido violado, ni lo protegerá si su proveedor de alojamiento web es el que accede a la base de datos.

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.

    
respondido por el Mark Buffalo 16.01.2016 - 16:40
fuente
0

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.

    
respondido por el Luc 16.01.2016 - 22:55
fuente

Lea otras preguntas en las etiquetas