如何在 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 中加密密码?的主要内容,如果未能解决你的问题,请参考以下文章
如何读取jar包外的properties文件和log4j.properties