java - 从属性文件保护数据库凭据的正确方法

标签 java mysql spring weblogic12c

I have a Database Connection class which accesses the database credentials from a property file located at src/main/resources.

**DBconfig.properties** (property file)

DB.url=jdbc:mysql://localhost:3306/studentdb
DB.username=root
DB.password=root

我的 Connection 类是这样的(位于 src/main/java ),

公共(public)类 DBconnect {

private static String resources="DBconfig.properties";
private static Connection con = null;
private static String url = null;
private static String username = null;
private static String password = null;


public static void main(String[] args) {

    ClassLoader loader = Thread.currentThread().getContextClassLoader();
    Properties prop = new Properties();

    try {

        InputStream rs = loader.getResourceAsStream(resources);
        prop.load(rs);

        url = prop.getProperty("DB.url");
        username = prop.getProperty("DB.username");
        password = prop.getProperty("DB.password");

        Class.forName("com.mysql.jdbc.Driver");
        con = DriverManager.getConnection(url,username,password);
        System.out.println("Database is Connected");

    } catch (Exception e) {

        System.out.println("Database is Not Connected");
        e.printStackTrace();
    }

}

}

我的问题是我的凭据以明文形式存在于属性文件中,我是否正确保护了我的凭据?我已经实现的方式安全吗?我需要做些什么来让它变得更好吗?这是一个使用 weblogic 应用服务器的 Spring MVC 应用程序。谢谢

最佳答案

您可以使用Jasypt ,这将允许您将它们存储在属性文件中,但以加密形式。

虽然它们是加密存储的,但如果你搞乱了 RAM,你可能可以访问它们(因为连接字符串在某些时候会存储在 RAM 中)。更安全的保护自己的方法是使用数据库中的角色、过程和 View 。

例如:不允许该用户创建新表,选择他想要的内容,允许他仅检索某些 View ,如果您想检查登录凭据,请使用程序执行此操作...

最后,最安全的选择是使用服务器并通过服务器完成所有操作。

关于java - 从属性文件保护数据库凭据的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50545624/

相关文章:

java - SQL 查询保证返回空

java - 使用 double 类型对对象数组列表的数组列表进行排序

mysql - 如何在 Hibernate 4 中使用 Mysql 中的 jpa 动态添加列?

java - 如何仅使用Java在vaadin中创建Spring Security登录页面?

java - 为什么在java中正则表达式的实现中使用魔数(Magic Number)?

java - JMM 保证关于对象的最终引用和非最终引用

php - 无法在 MySQL 表中插入图像记录

.net - 如何在 Visual Studio 2008 中获取 MySQL 数据库选项作为数据源?

php - SQL查询删除多个表并从多个表中选择

java spring 4 @Transactional嵌套事务问题