tomcat中的资源定义server.xml
看起来像这样......
密码是明确的.怎么避免这个?
如前所述,加密密码只是将问题转移到其他地方.
无论如何,这很简单.只需为您的密钥等编写一个包含静态字段的类,然后使用静态方法加密,解密您的密码.使用此类在Tomcat的配置文件(server.xml
或yourapp.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;
}
}
希望这可以帮助.
Tomcat有一个密码常见问题解答专门解决您的问题.简而言之:保持密码清晰并正确锁定服务器.
该页面还提供了一些关于如何使用默示安全性来传递审核员清单的建议.