2011-02-09 7 views

Respuesta

13

Una manera fácil y segura — si lo haces bien — está con un archivo de configuración. La cadena de conexión MySQL DBI/DBD se verá algo como –

dbi:mysql:my_dbname;mysql_read_default_file=/NON-WEB/path/to/.my.cnf 

– y pasará ningún usuario o contraseña a la llamada de conexión de DBI.

El archivo .my.cnf tendrá la contraseña. Las formas de mantener este seguro incluyen –

  • de archivos es única legible por el webuser.
  • El archivo está fuera de la raíz web; visitar una URL no puede llegar a ella.
  • El archivo de configuración contiene el mínimo para conectar, es probable que no necesita el nombre de usuario, por ejemplo.
  • Asegúrese de que no haya exploits en su aplicación que puedan permitir la exploración de su sistema de archivos.
  • cuenta MySQL de la webuser ha limitado privilegios: ninguna concesión, sin crear | eliminar tablas, etc, etc.
-1

Simplemente no hay manera de almacenar con seguridad el nombre de usuario/contraseña. Porque al final tu script siempre tiene que poder obtener los datos, cualquier otra persona podría ir de la misma manera.

Si almacena los datos cifrados, usted tiene que decir la secuencia de comandos para descifrar la clave. Entonces, si alguien lee el guión, obtiene la clave. Pero en el caso de un entorno CGI, la secuencia de comandos siempre debe ser legible por el servidor web.

Si no se encuentra en un CGI-Environment o se está ejecutando algo de suExec, puede obtener esta limitación estableciendo los derechos de acceso del script/configfile para que nadie más que el usuario ejecutante pueda leer los archivos.

Esto es seguro hasta que un administrador se acerca y quiere saber qué está ahí o alguien hackea su cuenta.

+2

El usuario pedido la "mejor manera" para almacenar esta información. Y aunque no hay formas 100% "seguras" de almacenar esto, algunas formas son mejores que otras. Mantener esta información separada del código es una buena práctica desde el punto de vista de seguridad y mantenimiento. – Rob

Cuestiones relacionadas