我想在下面提到的springApplicationContext.xml中保留密码编码
有什么办法可以做到这一点?
目前,我已经使用property-placeholder配置了所有属性,如下所示,但是原始密码仍在我的database.properties中打开
<beans:bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<beans:property name="driverClassName"><beans:value>${db.driverClassName}</beans:value></beans:property>
<beans:property name="url"><beans:value>${db.url}</beans:value></beans:property>
<beans:property name="username"><beans:value>${db.username}</beans:value></beans:property>
<beans:property name="password"><beans:value>${db.password}</beans:value></beans:property>
</beans:bean>
但实际价值存在于我的 database.properties
db.driverClassName=com.mysql.jdbc.Driver
db.url=jdbc:mysql://localhost/myDB
db.username=root
db.password=root
我想要以下内容:
<beans:bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<beans:property name="driverClassName"><beans:value>${db.driverClassName}</beans:value></beans:property>
<beans:property name="url"><beans:value>${db.url}</beans:value></beans:property>
<beans:property name="username"><beans:value>${db.username}</beans:value></beans:property>
<beans:property name="password"><beans:value>${db.password}</beans:value></beans:property>
</beans:bean>
但是我的密码属性值应为加密格式 database.properties
db.driverClassName=com.mysql.jdbc.Driver
db.url=jdbc:mysql://localhost/myDB
db.username=root
db.password=3g6n72ef8x (using any encription method).
和我的dataSource在建立新的数据库连接之前在内部解密密码。
非常感谢您对此提供的任何帮助/建议。
我回答自己的问题可能很有趣。但我还是想告诉我解决方案,其他可能也遇到过类似问题的人。
为简单起见,我使用了BASE64Encoder和BASE64Decoder。稍后,我将修改代码以使用安全/更好的加密/解密算法。
我已经使用以下代码对数据库密码(例如:root)进行了编码:
private String encode(String str) {
BASE64Encoder encoder = new BASE64Encoder();
str = new String(encoder.encodeBuffer(str.getBytes()));
return str;
}
并将编码后的密码放在我的database.properties文件中,如下所示:
之前
db.driverClassName=com.mysql.jdbc.Driver
db.url=jdbc:mysql://localhost/myDB
db.username=root
db.password=root
后
db.driverClassName=com.mysql.jdbc.Driver
db.url=jdbc:mysql://localhost/myDB
db.username=root
db.password=cm9vdA== (Note: encoded 'root' by using BASE64Encoder)
现在,我为org.apache.commons.dbcp.BasicDataSource编写了一个包装器类,并重写了setPassword()方法:
import java.io.IOException;
import org.apache.commons.dbcp.BasicDataSource;
import sun.misc.BASE64Decoder;
public class MyCustomBasicDataSource extends BasicDataSource{
public CustomBasicDataSource() {
super();
}
public synchronized void setPassword(String encodedPassword){
this.password = decode(encodedPassword);
}
private String decode(String password) {
BASE64Decoder decoder = new BASE64Decoder();
String decodedPassword = null;
try {
decodedPassword = new String(decoder.decodeBuffer(password));
} catch (IOException e) {
e.printStackTrace();
}
return decodedPassword;
}
}
这样我解码(BASE64Decoder)database.properties中提供的编码密码
并且还修改了springApplicationContext.xml文件中提到的我的dataSource bean的class属性。
<beans:bean id="dataSource" class="edu.config.db.datasource.custom.MyCustomBasicDataSource" destroy-method="close">
<beans:property name="driverClassName"><beans:value>${db.driverClassName}</beans:value></beans:property>
<beans:property name="url"><beans:value>${db.url}</beans:value></beans:property>
<beans:property name="username"><beans:value>${db.username}</beans:value></beans:property>
<beans:property name="password"><beans:value>${db.password}</beans:value></beans:property>
谢谢。
在尝试让Liberty容器工作时,我遇到了以下问题。 对于数据库连接,我在server.xml中有一个像这样的AuthData部分: 当我试图用未编码的密码运行服务器时,数据库连接按预期工作,但是当密码被编码时,我得到这条消息:连接被拒绝(连接被拒绝)。错误代码=-4499,SQL State = 08001 dsra 0010 e:SQL State = 08001,错误代码=-4499 在设置
我正在创建一个web应用程序来分配用户对数据库的访问权限。我们获得一张票证,授予用户访问权限,服务台人员选择sql实例,在应用程序上输入用户名和密码以分配访问权限。我的问题是连接字符串都存储在sql数据库中,实例密码使用hashbyte函数加密。 由于密码已加密,我如何通过我的C#asp.net代码连接到数据库。帮助台人员只会选择实例,不会输入登录凭据
我正在开发一个应该部署到Azure的Spring Boot应用程序。使用以下依赖项,我设法将密钥库中的机密用于敏感的应用程序属性: 通过设置poperty并配置托管服务标识,我只需从KeyVault中插入秘密名称,如下所示: 现在我有了一个数据库连接,密码具有通常的键。不幸的是,Azure KeyVault中的秘密名称不允许使用圆点。-( 是否有一种简单的方法来用破折号替换点,破折号是KeyVau
目前,我们正在使用Checkmarx扫描应用程序代码。不确定Checkmarx是否检测/扫描源代码中的任何硬编码密码。是否需要在Checkmarx服务器上添加任何额外的配置来检测密码?
我试图连接到使用下面的命令和获取错误。 FailedToParse:密码必须为mongoDB://URL:mongodb://user:user@123@localhost:27017/my-employees?authSource=admin尝试mongo--help获取更多信息 URL=
我应该如何用Spring Data REST自动编码我的实体的Subbmissibed纯密码字段? 在setter方法上使用@projection和SpEL是可能的吗?