Me preguntaba cuál es la mejor manera de almacenar los nombres de usuario y contraseña para conectarse a la base de datos MySQL?¿Cómo puedo cifrar u ocultar las contraseñas en un script en Perl que se utilizan para conectarse a la base de datos MySQL
Respuesta
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.
Véase el chapter Configuring Perl Programs de Mastering Perl.
(Enlace sólo se debe copiar restricciones.)
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.
- 1. conectarse a la base de Perl
- 2. ¿Cuál es la forma recomendada de cifrar contraseñas de usuario en una base de datos?
- 3. ¿Cómo puedo ocultar una contraseña/nombre de usuario utilizado en un script bash para acceder a MySQL?
- 4. Conectarse a la base de datos MySQL con RMySQL
- 5. Java: problemas para conectarse a la base de datos MySQL en línea usando JDBC
- 6. Cómo conectarse a la base de datos sqlite con contraseña
- 7. ¿Cómo puedo cifrar la configuración del usuario (como las contraseñas) en mi aplicación?
- 8. Heroku - Cómo cifrar la base de datos
- 9. ¿Mejores prácticas para mantener contraseñas en shell/scripts de Perl?
- 10. ¿Cómo puedo mostrar u ocultar fácilmente las vistas en Griffon
- 11. Cómo copiar una tabla de una base de datos mysql a otra base de datos mysql
- 12. El uso de shell script para insertar datos en la base de datos MySQL remota
- 13. Establecer la base de datos actual en MySQL script
- 14. Cifrar base de datos SQLite en C#
- 15. Maneras más eficientes de conectarse a la base de datos mysql en varios archivos (PHP)
- 16. Método preferido para almacenar contraseñas en la base de datos
- 17. ¿Cómo puedo empaquetar mi script Perl para que se ejecute en una máquina sin Perl?
- 18. Conectarse a una base de datos MySQL en línea de localhost
- 19. ¿Cómo puedo compilar mi script Perl para que se pueda ejecutar en sistemas sin Perl instalado?
- 20. .Net C# cómo conectarse a una base de datos SQL Server externa? OleDb u otro?
- 21. ¿Cómo puedo obtener el nombre de la base de datos de un manejador Perl MySQL DBI?
- 22. mangento en la base de datos postgres u oracle?
- 23. La mejor manera de cifrar texto para almacenar la base de datos MySQL
- 24. ¿Cuál es la mejor implementación para boolean en MySQL usando Java para conectarse a la base de datos?
- 25. cómo almacenar contraseñas en la base de datos?
- 26. Cómo conectarse a una base de datos remota desde la aplicación de Iphone nativa
- 27. ¿Conectarse a la base de datos MySQL 5.0 utilizando vbscript puro?
- 28. ¿Cómo se usa la inducción para conectarse a una base de datos SQLite local?
- 29. Conexión a la base de datos MySQL en el servidor
- 30. ¿Cómo evito que se guarden las contraseñas?
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