Sie können das codierte Passwort in die Konfigurationsdatei eingeben und das Passwort in einem benutzerdefinierten DataSource
decodieren. Im Anschluss ist die Idee:
1. Encode das Passwort und in die Konfigurationsdatei setzen:
Sie jeden Algorithmus es kodieren können oder mit Verschlüsselung zu sichern. Zum Beispiel Base64 verwenden, um ein Kennwort „myPassword“ auf „bXlQYXNzd29yZA ==“ und in der Konfigurationsdatei zu codieren:
<property name="password"><value>bXlQYXNzd29yZA==</value></property>
2. Implementieren ein benutzerdefinierten DataSource
und dekodieren/das Passwort in dem entsprechenden Verfahren entschlüsseln. Es folgt ein Beispiel, das org.apache.commons.dbcp.BasicDataSource
erweitert:
public class CustomDataSource extends BasicDataSource{
public void setPassword(String encodedPassword){
this.password = decodePassword(encodedPassword);
}
private String decodePassword(String encodedPassword) {
// decode or decrypt the encodedPassowrd
return decodedPassword;
}
}
3. Verwenden Sie die benutzerdefinierte DataSource
in Ihrer Konfiguration:
<bean id="dataSource" class="CustomDataSource">
<!-- other properties like driverClassName, url, username, etc. -->
<property name="password"><value>bXlQYXNzd29yZA==</value></property>
</bean>
Warum das wichtig, wenn Sie Ihre XML-Konfigurationsdateien sind in einer sicheren Zone? –
@Nguyen: Ich möchte auch diese Perspektive verstehen, glaubst du, WAR-Datei auf Remote-Servern sind sicher genug? Wenn jemand Zugriff darauf bekommt, werden Dinge offengelegt. Also möchte nur zusätzliche Sicherheitsebene haben. –
JDBC-Verbindungsdetails (z. B. für MySQL-Datenbanken) können in eine JNDI-Datenquelle innerhalb des Anwendungsservers verschoben werden. App-Server wie JBoss verschlüsseln normalerweise JNDI-Objektwerte, sodass Ihre JDBC-Verbindungsdetails sicher sind, wenn sie als JNDI-Datenquelle konfiguriert sind. Die SMTP-Verbindungsdetails können in ähnlicher Weise als JNDI-Ressource gespeichert werden. Wenn Sie mit Tomcat arbeiten, müssen Sie die JNDI-Ressourcendetails möglicherweise selbst verschlüsseln und entschlüsseln. – manish