2010-12-16 10 views
5

¿Hay alguna manera de solicitar la contraseña de la base de datos en tiempo de ejecución en lugar de colocarla (cifrada o no) en el archivo hibernate.cfg.xml?Contraseña de la base de datos de Hibernate en tiempo de ejecución

+0

¡Ay! esa es una pregunta interesante. ¿Puedo preguntar el contexto en el que estás usando Hibernate? ¿Es esta una aplicación independiente o una aplicación web? Además, si se trata de una aplicación web, ¿estás usando Spring? –

+0

En este punto, es una aplicación independiente, pero quiero protección en el lado de la base de datos, no en la aplicación, porque la base de datos tiene mejor protección que mi aplicación. Además, ¿por qué debería intentar construir un cifrado que ya esté presente en el lado de la base de datos? No me importa que personas equivocadas tengan mi aplicación, solo me importa que las personas equivocadas tengan acceso a mi base de datos. – FinalArt2005

Respuesta

3

Casi todas las opciones de configuración en Hibernate tienen un método correspondiente en el objeto que se está configurando. En realidad, la configuración es realmente solo una forma de vincular XML a los objetos que se están configurando. Consulte este artículo para obtener más información: http://docs.jboss.org/hibernate/core/3.3/reference/en/html/session-configuration.html

Dicho esto, le corresponde a usted recoger la contraseña al inicio. Esa puede ser la parte más difícil del problema. Una vez que haya recopilado la contraseña, envíela a la propiedad adecuada.

2

Normalmente, la mejor manera de hacerlo, si está utilizando un servidor de aplicaciones Java EE, es utilizar una búsqueda JNDI para obtener la conexión de la base de datos en lugar de utilizar un administrador de controladores. De esta forma, la persona que configura el conjunto de conexiones JNDI es la única que debe conocer la contraseña, y generalmente está encriptada en la consola de administración para que sea segura.

2

Creo que si utiliza la instanciación programática de la configuración de Hibernate, puede inicializarla desde el archivo de configuración que no contiene una contraseña, establecer la propiedad adicional para la conexión de la base de datos en el objeto de configuración que está creando llama a buildConfguration().

Cuestiones relacionadas