Contraseña y nombre de usuario utilizados para conectarse a la base de datos en el código fuente [duplicado]

0

En los scripts PHP que se comunican con la base de datos, tengo el nombre de usuario y la contraseña en la base de datos en texto sin formato, es decir, mysqli_connect('localhost:3306', 'root', 'PASSWORD!') . De OWASP

  

No incluya ninguna credencial en su código fuente, incluyendo (pero no   limitado a) nombres de usuario, contraseñas ...

¿Cómo se puede proteger esto? Además, ahora mismo, cada secuencia de comandos tiene el mismo código para conectarse a la base de datos, por lo que estoy pensando en crear una secuencia de comandos (base.php) e incluirla en cada página que consulte la base de datos. ¿Está bien o es un riesgo de seguridad? Si mi descripción no estaba clara, básicamente estoy pensando en copiar lo que hace Cameron Laird con la base en esta pregunta .

    
pregunta Celeritas 06.06.2013 - 00:40
fuente

3 respuestas

6

El siguiente párrafo es clave:

  

Tales constantes pertenecen a propiedades o archivos de configuración debidamente protegidos.

Debería definir las credenciales de nombre de usuario / contraseña como variables en un archivo separado, algo como db_config.php . Este archivo de configuración debe ser incluido por cualquier archivo de código fuente PHP que necesite para conectarse a la base de datos.

Este archivo de configuración debe tener los permisos establecidos para que el público en general no pueda leerlos y debe excluirse del control de versión del código fuente para que no se registren.

El objetivo básico es que la información confidencial esté contenida en un solo lugar que no sea parte del código fuente principal.

Esto no significa que las credenciales no estarán en un archivo junto con el código fuente, y no significa que el archivo de configuración no pueda ser un archivo PHP.

    
respondido por el B-Con 06.06.2013 - 00:57
fuente
2

Lo ideal sería colocarlos en un archivo de configuración que no sea accesible para la web, pero que sea accesible para el usuario que ejecuta el motor PHP. De esta manera, alguien que accede al sitio no puede acceder directamente a la configuración, pero los scripts que deben ejecutarse pueden alcanzarla.

    
respondido por el AJ Henderson 06.06.2013 - 01:39
fuente
0

Debería estar en un repositorio de configuración de algún tipo, uno que se pueda cambiar en el tiempo de ejecución sin referencia al código fuente. Como mínimo, los códigos se pueden cambiar rápidamente. y de manera uniforme, y los entornos separados para pruebas y desarrollo no necesitan tener acceso a la cuenta en vivo y la información de la contraseña.

En última instancia, por supuesto, el secreto de cómo acceder a la base de datos tiene que estar en el programa, y podría ser revertido por alguien con acceso a la programa. Es posible envolver el secreto en varias capas (por ejemplo, mediante cifrar la información de configuración) pero todavía tiene que estar allí en algún lugar.

    
respondido por el ddyer 06.06.2013 - 00:57
fuente

Lea otras preguntas en las etiquetas