Java 在代码中存储数据库密码

Java 在代码中存储数据库密码,java,security,Java,Security,好的,我创建了一个JavaSwing应用程序,它使用JDBCMySQL jar文件连接到服务器上的数据库。没有真正的问题,一切都很好。然后我开始思考,有可能有人会进入程序并查看源代码。这里没有什么大问题,除了我有数据库信息(url、用户名、密码等),这对某人来说只是一个大问题,可以直接进入数据库获取数据 我的问题是关于这件事的总体想法是什么?你如何在你的源代码中存储一个密码,知道有人可以进入并获取信息,如果他们真的确定了的话? 一种方法:您可以将这些安全信息存储在加密文件中,然后在运行时解密该文

好的,我创建了一个JavaSwing应用程序,它使用JDBCMySQL jar文件连接到服务器上的数据库。没有真正的问题,一切都很好。然后我开始思考,有可能有人会进入程序并查看源代码。这里没有什么大问题,除了我有数据库信息(url、用户名、密码等),这对某人来说只是一个大问题,可以直接进入数据库获取数据

我的问题是关于这件事的总体想法是什么?你如何在你的源代码中存储一个密码,知道有人可以进入并获取信息,如果他们真的确定了的话?

  • 一种方法:您可以将这些安全信息存储在加密文件中,然后在运行时解密该文件并打开数据库

  • 另一种方法:让应用程序连接到您自己的网站,并引入安全信息


好消息!已经有人问过如何安全地存储Java应用程序的密码,所以您不需要等待答案!看,你可以加密你的凭证,它比纯文本更安全。你可以使用你不需要的,你可以把它放在更安全的地方。我不认为这是重复的,他是在问关于数据源配置的问题!“如果他们真的下定决心了”,那么你对客户所做的一切都不会对你有帮助。您可以按任何方式对其进行加密,但只要所有这些和解密逻辑都在客户端上,您就无法阻止一个有决心、有知识的人。您应该假设这样的人知道您的数据库密码。是否有人可以完全忽略您的代码,而只是窥探到与数据库服务器的通信?OTOH,如果您只想停止使用“服务层”包装您的数据库,并且不公开下面的任何内容。您可能不用使用存储过程,我喜欢方法#1,这似乎很简单,因为它只有1个密码。方法2似乎解决不了太多问题,对吧?我仍然需要一个密码才能连接到我的服务器,这同样糟糕。另外,数据库托管在同一台服务器上。+1表示两种非常适用且安全的解决方案是的,您是对的#2不是真正的解决办法。但是,您可以混合使用这两种方法来获得最大的安全性。(即,将加密文件放在具有授权访问权限的服务器上)保护客户端数据库连接的最佳方法是不将数据库连接分发给客户端;而是让客户端访问连接到数据库的服务器(可能通过REST调用)。