2010-12-16 22 views
5

Gibt es eine Möglichkeit, das Datenbankkennwort zur Laufzeit anzufordern, anstatt es (verschlüsselt oder nicht) in die Datei hibernate.cfg.xml zu schreiben?Hibernate-Datenbankkennwort zur Laufzeit

+0

Autsch! das ist eine interessante Frage. Kann ich den Kontext fragen, in dem Sie Hibernate verwenden? Ist das eine eigenständige Anwendung oder eine Web-App? Wenn Sie eine Web-App verwenden, verwenden Sie außerdem Spring? –

+0

An diesem Punkt ist es eine eigenständige Anwendung, aber ich möchte den Schutz auf der Datenbankseite, nicht in der Anwendung, da die Datenbank einen besseren Schutz als meine Anwendung bietet. Außerdem, warum sollte ich versuchen, eine Verschlüsselung einzubauen, die bereits auf der Datenbankseite vorhanden ist? Ich habe nichts gegen falsche Leute, die meine Bewerbung haben, ich kümmere mich nur um falsche Leute, die Zugang zu meiner Datenbank haben. – FinalArt2005

Antwort

3

Fast jede Konfigurationsoption in Hibernate verfügt über eine entsprechende Methode für das zu konfigurierende Objekt. In Wirklichkeit ist die Konfiguration nur eine Möglichkeit, XML an die Objekte zu binden, die gerade eingerichtet werden. Weitere Informationen finden Sie in diesem Artikel: http://docs.jboss.org/hibernate/core/3.3/reference/en/html/session-configuration.html

Das heißt, Sie müssen das Kennwort beim Start abholen. Das kann der schwierigste Teil des Problems sein. Nachdem Sie das Passwort erfasst haben, senden Sie es an die entsprechende Unterkunft.

2

Wenn Sie einen Java EE-Anwendungsserver verwenden, ist es normalerweise die beste Methode, einen JNDI-Lookup zu verwenden, um die Datenbankverbindung zu erhalten, anstatt einen Treibermanager zu verwenden. Auf diese Weise ist die Person, die den JNDI-Verbindungspool einrichtet, die einzige, die das Passwort kennen muss, und es ist in der Regel in der Admin-Konsole verschlüsselt, so dass es sicher ist.

2

Ich denke, wenn Sie Programmatic Instanziierung der Hibernate-Konfiguration verwenden, können Sie es aus der Konfigurationsdatei initialisieren, die kein Kennwort enthält, dann legen Sie die zusätzliche Eigenschaft für die Datenbankverbindung auf dem Konfigurationsobjekt, das Sie instanziieren Rufen Sie BuildConfguration() auf.