当前位置: 首页 > 面试题库 >

在Spring xml文件中隐藏数据源密码

邓季
2023-03-14
问题内容

有没有一种方法可以在xml
spring配置文件中隐藏/加密密码?我读到DataSource的“自定义”子类是可能的,但是解决方案将密钥与纯文本保存在相同的配置文件中…因此有点没用。

有没有办法使用KeyStore?例如,从密钥库中读取值。

谢谢大家


问题答案:

是的,你可以这样做。您将必须围绕数据源类创建一个包装器bean。这是我以前做过的一个例子。希望这可以帮助!

<beans>
    <bean id="someDao" class="com.dao.SomeDAOImpl">
         <property name="datasource">
            <ref local="secureDataSource"/>
        </property>
    </bean>
    <bean id="secureDataSource" class="com.ds.SecureDataSource">
        <property name="driverClassName">
            <value><your driver></value>
        </property>
        <property name="url">
            <value><your url></value>
        </property>  
        <property name="username">
            <value><your user id></value>
        </property>
        <property name="password">
            <value><encrypted_pwd></value>
        </property> 
    </bean> 
</beans>

然后,在SecureDataSource类中,您将需要解密密码。

import java.sql.Connection;
import java.sql.SQLException;


public class SecureDataSource extends DriverManagerDataSource{

    private String url;
    private String username;
    private String password;
    /**
     * @param url the url to set
     */
    public void setUrl(String url) {
        this.url = url;
    }

    /**
     * @param username the username to set
     */
    public void setUsername(String username) {
        this.username = username;
    }

    /**
     * @param password the password to set
     */
    public void setPassword(String password) {
        this.password = password;
    }

    protected Connection getConnectionFromDriverManager() throws SQLException {
        String decryptedPassword = null;
        //decrypt the password here
        return getConnectionFromDriverManager(url,username,decryptedPassword);
    }
}


 类似资料:
  • 人们可以很容易地提取<代码>。jar文件,请参阅源代码。我想保护源代码不被看到。一个可能的答案是像对zip文件那样对文件进行密码保护。 但是,如果密码是已知的,那么源代码就可以很容易地看到。 有没有办法隐藏源代码并使其能够运行?类似于〈代码〉的东西。exe在Windows中执行。这应该在windows和Linux环境中运行。

  • Spring Boot使用属性文件,至少在默认情况下,密码是纯文本的。有可能以某种方式隐藏/解密这些吗?

  • 我目前正在使用Java服务包装器。它工作得很好,我可以使用我的可执行jar将其作为服务安装,甚至在将其作为服务安装时传递VM参数。 但由于这将在这里和那里部署,我想知道如何防止人们检索Jar文件中的源文件。这可能吗?我正在考虑将jar文件转换为。exe文件,并将其作为这样的服务安装,因为我发现有几个工具能够做到这一点。但他们似乎不允许我传递VM参数。 有人知道我该怎么做吗?

  • 问题内容: Spring Boot使用属性文件,并且至少在默认情况下,密码为纯文本。是否可以以某种方式隐藏/解密这些内容? 问题答案: 你可以使用Jasypt加密属性,因此可以使属性如下所示: Jasypt允许你使用不同的算法对属性进行加密,一旦获得加密的属性,就可以将其放入。例如,你可以使用终端通过Jasypt以这种方式进行加密: 要使用Spring Boot轻松配置它,可以将其启动器jasyp

  • Linux 下,名称中第一个字符为 . 的文件或者文件夹,系统会将它们隐藏起来。传统上,这种文件大多是用户的配置文件。 您可以尝试以下操作: cd ~ #进入您的用户目录 ls #查看当前目录下的文件列表 ls -a #查看所有文件的文件列表(包括隐藏文件)。 如果您只想查看隐藏文件,而不包括这两个特殊目录,您可以使用 ls 命令的选项 -A (ls -A) 每个目录下都包含

  • 我需要在源代码中隐藏密码,有什么可能的方法来混淆密码,以降低反编译的风险? 例如