如何在 log4j.properties 中加密密码?

Posted

技术标签:

【中文标题】如何在 log4j.properties 中加密密码?【英文标题】:How can I encrypt password in log4j.properties? 【发布时间】:2014-05-16 14:48:39 【问题描述】:

有什么方法可以在 log4j.properties 中加密密码

以下是我的附加程序

log4j.appender.DB=org.apache.log4j.jdbc.JDBCAppender
log4j.appender.DB.URL=jdbc:mysql://localhost:3306/anilpractice
log4j.appender.DB.driver=com.mysql.jdbc.Driver
log4j.appender.DB.user=root
log4j.appender.DB.password=P@ssw0rd
log4j.appender.DB.sql=INSERT INTO logs VALUES('%x','%ddd MMM yyyy HH:mm:ss','%C','%p','%m')
log4j.appender.DB.layout=org.apache.log4j.PatternLayout

请帮助我如何加密 .password 标签?

谢谢大家。

【问题讨论】:

你应该把加密密码放在log4j文件上,而不是做加密操作。 如何使用加密密码连接到数据库?我如何指定我正在使用加密密码的数据库?你能举个例子解释一下吗? 【参考方案1】:

谢天谢地,终于找到了将加密密码保存在 Log4j.properties 中的解决方案

我们要做的就是,

复制JDBCAppender 类的log4j.jar。

修改定义

public void setPassword(String password)
  
          this.databasePassword = password;
  

JDBCAppender

根据你的需要并替换log4j.jar中的那个类。

【讨论】:

【参考方案2】:

我认为这是不可能的。即使有可能,请考虑以下事项:

如果您仅通过提供“加密密码”就可以建立连接,那就像密码未加密一样,因为复制加密密码的每个人都可以连接并破坏您的数据库。唯一不同的是,密码以不同的方式呈现,可能不太可读,但仍然非常有用。即使您在代码中实现了密码的对称解密,如果攻击者可以访问包含加密密码的配置文件,他很可能也可以访问在同一台机器上运行的包含解密算法的代码,并且将能够反编译和读取算法。

最好创建一个具有受限访问权限的 DB-User,只写入日志表。这样一来,被盗密码不会对您的数据库造成太大损害。

【讨论】:

以上是关于如何在 log4j.properties 中加密密码?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 log4j.properties 中加密密码?

学习笔记开源日志记录工具log4j使用方法

如何读取jar包外的properties文件和log4j.properties

如何覆盖log4j.properties的特定值?

如何在 web.xml 和 log4j.properties 中配置 log4j 输出文件路径?

如何配置maven以在不同环境中使用不同的log4j.properties文件