我正在使用 JPA2.0 ( Eclipselink )与数据库交互,我有persistence.xml
文件,其中包含一些数据库配置。我想隐藏用于访问DB的密码。我正在使用eclipse IDE。 persistence.xml
文件中使用了以下配置标记。
<property name="javax.persistence.jdbc.user" value="app"/>
<property name="javax.persistence.jdbc.password" value="password"/>
我不想在xml
中提及密码。我该怎么办呢?
注意:我的应用程序由Swing与Apache的Derby 嵌入式数据库组成。
答案 0 :(得分:2)
您可以让服务器存储密码,然后您可以使用JNDI
检索密码。
还可以加密密码,并在客户端解密。虽然这很容易受到字典攻击,甚至可以直接通过反编译程序来反转这个过程。
答案 1 :(得分:0)
在这种情况下,通常会将哈希值存储在XML文件中,并在后端验证哈希值是否匹配。
您应该可以执行以下伪代码:
String password = property.getParam(password);
String user = property.getParam(user);
function validateHash(String unhashedPassword, String unhashedUser)
{
String passHash = generateMD5(unhashedPassword);
String userHash = generateMD5(unhashedUser);
if(!password.equals(passHash) && !user.equals(userHash)
{
throw new SecurityException("Oh noez hackstar");
}
}
关于使用散列算法的讨论是一个冗长的问题,只要您不试图保护核发射代码,MD5就没有什么坏处。