如何连接到需要密码不暴露密码数据库?(How to connect to a database th

2019-07-30 00:47发布

我创建一个应用程序,我需要连接到一个数据库。 数据库需要登录/密码,以便应用程序可以做的操作,如选择和插入。

在应用程序中,我需要连接到使用登录名和密码数据库中,这样的应用程序是免费做数据库的一些任务。 我的问题是:我该如何存储和使用密码连接到数据库,而暴露的密码?

我不能简单地使用哈希或加密存储密码,因为数据库必须认识到的密码(我想大多数或所有数据库必须接受密码为纯文本)。

注:连接由申请。 没有人投入去做的连接。

(编辑)有关应用程序的更多信息:它是使用servlet / JSP的Web应用程序。 该数据库是应用程序的同一台服务器上。 该应用程序的用户是完全没有权力管理默认的用户,但它可以插入/删除行,去做一些涉及表的查询和数据修改最多的事。

Answer 1:

这样做的通常方法是外部用户名/密码的属性/ config文件这是在运行时读取(无论是否使用本机JDBC / JNDI / CDI / J2EE数据源的/ etc)。

该文件是通过由系统管理员的O / S的安全保护。

在O / S具有保护比应用程序的代码更好的工具。



Answer 2:

您应该使用配置文件用于此。 采用弹簧与JDBC,让您的生活更轻松!

http://www.youtube.com/watch?v=f-k823MZ02Q

结帐的Spring框架和使用JDBC上述真棒教程。 关注他所有的JDBC和春季教程。 顺便说一句,他介绍了如何密码储存在配置文件和线豆等。希望这有助于。



Answer 3:

您可以使用jasypt为encryption.And存储datasource.properties文件中的用户名和密码。

public Connection getConnection() throws IOException{
    try{
        BasicTextEncryptor encryptor = new BasicTextEncryptor();
        encryptor.setPassword("jasypt");

        Properties props = new EncryptableProperties(encryptor);
        props.load( this.getClass().getResourceAsStream("datasource.properties") );

        String driver = props.getProperty("datasource.driver");
        String url = props.getProperty("datasource.url");        
        String userName = props.getProperty("datasource.userName");          
        String password = props.getProperty("datasource.password");

        Class.forName(driver);
        Connection conn = DriverManager.getConnection(url, userName, password);
        conn.setAutoCommit(false);

        return conn;
    } catch(ClassNotFoundException e) {
        e.printStackTrace();
        return null;

    } catch(SQLException e) {
        e.printStackTrace();
        return null;
    }
}


Answer 4:

如果它是一个Web应用程序,它部署在Java EE应用服务器上,并使用JNDI资源连接。 只有谁设置了JNDI数据资源管理员需要了解连接所需的凭据。 用户和开发者甚至不必知道他们。 只是JNDI查找名称。

这是不可能完全消除的,除了数据库所有者知道用户名和密码的人的需要,但它可以限制这些知识应用服务器所有者。

您也奉劝只是该应用程序创建单独的证书,并授予它最小访问并完成其任务所需的权限。 应该有系统表或任何其他应用程序资源的省外毫不知情。 IF DELETE权限是没有必要的,不授予它。 如果访问应该只为只读,这就是你应该授予该证书的内容。



文章来源: How to connect to a database that requires password without exposing the password?