正如标题所说,我们的应用程序在 context.xml 中有资源,我们需要对其进行加密以进行安全审计。我知道 Tomcat 的 FAQ 提到了通过模糊实现的安全性,但我们需要对其进行加密以用于任何审计目的。
当前 context.xml 中的资源如下所示:
<Resource
name="jdbc/OracleDataSource"
auth="Container"
type="javax.sql.DataSource"
driverClassName="oracle.jdbc.OracleDriver"
url="jdbc:oracle:thin:@ServerName:PORT/NAME"
username="APP_USERNAME"
password="APP_PASSWORD"
testWhileIdle="true"
testOnBorrow="true"
testOnReturn="false"
validationQuery="select 1 from dual"
timeBetweenEvictionRunsMillis="5000"
maxTotal="100"
maxIdle="20"
minIdle="10"
maxWaitMillis="10000"
initialSize="10"
removeAbandonedTimeout="1800"
removeAbandonedOnBorrow="true"
removeAbandonedOnMaintenance="true"
logAbandoned="true"
minEvictableIdleTimeMillis="30000"
/>
在我们的应用程序代码中,我们使用 RC4 编码,文件知道从 @RC4Encode@XXX,XXX,XXX,XXX,XXX,XXX,XXX 格式解密为其他凭据用途的明文密码。
我希望在我们的 context.xml 中以某种方式实现它,但我不确定如何实现它。我以前在这里看到过一些关于 BasicDataSourceFactory 的帖子,但我不太了解实现,当我尝试导入 BasicDataSourceFactory 时,我得到了 ClassNotFoundException。我确实尝试在 context.xml 中进行变量导入,但是我们无法访问应用程序所在的服务器上的 catalina.properties,也无法访问它所在的文件夹结构,根据我的理解,这消除了使用属性替换或外部 XML 实体的可能性。
如果我能弄清楚如何解决 DataSourceFactory not found 错误,我可以尝试复制一些用于将密码解码回明文的“解码”方法,并直接针对 RC4 编码密码调用解码方法,然后将其传递给 context.xml。
DataSourceFactory 方法的粗略伪代码:
public class APPDataSourceFactory extends BasicDataSourceFactory {
private String encrypted_pwd = "@RC4Encode@123,456,789,012,345";
public void decrypt_pwd(encrypted_pwd,key){
//Decryption Steps
return decrypted_pwd;
}
}