当前位置:  开发笔记 > 数据库 > 正文

如何避免在tomcat的server.xml中以明文形式存储密码?DataSource的资源定义?

如何解决《如何避免在tomcat的server.xml中以明文形式存储密码?DataSource的资源定义?》经验,为你挑选了2个好方法。

tomcat中的资源定义server.xml看起来像这样......


密码是明确的.怎么避免这个?



1> 小智..:

如前所述,加密密码只是将问题转移到其他地方.

无论如何,这很简单.只需为您的密钥等编写一个包含静态字段的类,然后使用静态方法加密,解密您的密码.使用此类在Tomcat的配置文件(server.xmlyourapp.xml...)中加密密码.

要在Tomcat中"动态"解密密码,请扩展DBCP BasicDataSourceFactory并在资源中使用此工厂.

它看起来像:

    

而对于定制工厂:

package mypackage;

....

public class MyCustomBasicDataSourceFactory extends org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory {

@Override
public Object getObjectInstance(Object obj, Name name, Context nameCtx, Hashtable environment) throws Exception {
    Object o = super.getObjectInstance(obj, name, nameCtx, environment);
    if (o != null) {
        BasicDataSource ds = (BasicDataSource) o;
        if (ds.getPassword() != null && ds.getPassword().length() > 0) {
            String pwd = MyPasswordUtilClass.unscramblePassword(ds.getPassword());
            ds.setPassword(pwd);
        }
        return ds;
    } else {
        return null;
    }
}

希望这可以帮助.


IMO它仍然比明确的密码更好,每个愚蠢的脚本小子将知道寻找它.它提高了一些吧,不是吗?
对我来说,这并没有增加任何安全性,因为攻击者总是可以反编译你的jar来获取你在类文件中硬编码的密码......

2> Ryan..:

Tomcat有一个密码常见问题解答专门解决您的问题.简而言之:保持密码清晰并正确锁定服务器.

该页面还提供了一些关于如何使用默示安全性来传递审核员清单的建议.


尽管如此,您可能还是希望将包含密码的文件与其余配置分开保存。在某些情况下,人们希望将配置文件放入某个版本控制系统中,该版本控制系统对于所有相关开发人员,不仅是系统管理员,都是可读的。
推荐阅读
周扒pi
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有