【问题标题】:Storing database passwords in code [duplicate]在代码中存储数据库密码[重复]
【发布时间】:2013-10-04 00:44:54
【问题描述】:

好的,所以我创建了一个 java swing 应用程序,它使用 JDBC MySQL jar 文件连接到服务器上的数据库。没有真正的问题,一切都很好。然后我开始考虑有人可能会进入程序并查看源代码。除了我有数据库信息(url、用户名、密码等)之外,没有什么真正的大问题,而这只是让某人进入并获取数据库数据的一张敞开的票。

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

【问题讨论】:

  • 好消息!已经有人问过如何安全地存储 Java 应用程序的密码,因此您无需等待答案!见How are secure database connections usually implemented in JAR files?
  • 你可以加密你的凭据,它比纯文本更安全。你可以使用jasypt
  • 你没有,你把它放在更安全的地方。
  • 我不认为这是重复的,他是在询问数据源配置!
  • “如果他们真的下定决心”,那么您在客户端上所做的任何事情都不会帮助您。你可以以任何你想要的方式对其进行加密,但只要所有这些和解密逻辑都在客户端上,你就无法阻止一个坚定的、知识渊博的人。您应该假设这样的人会知道您的数据库密码。有人可以完全忽略您的代码并简单地窥探与数据库服务器的通信吗? OTOH,如果您只想停止使用“服务层”包装您的数据库并且不暴露任何低于此的内容。您可能不会使用存储过程。

标签: java security


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

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

【讨论】:

  • 我喜欢方法#1,这看起来很简单,因为它只有 1 个密码。方法#2似乎并没有解决太多问题,对吧?我仍然需要密码才能连接到我的服务器,这同样糟糕。数据库也托管在同一台服务器上。
  • +1 两个非常适用且安全的解决方案
  • 是的,你是对的。 #2 不是真正的解决方案。但是,您可以混合使用这两种方法以获得最大的安全性。 (即在授权访问的服务器上拥有加密文件)
  • 保护客户端与数据库的连接的最佳方法是不将数据库连接分发给客户端;而是让客户端访问连接到数据库的服务器(可能通过 REST 调用)。
猜你喜欢
  • 2012-09-25
  • 2011-12-25
  • 2012-02-16
  • 1970-01-01
  • 1970-01-01
  • 2020-03-20
  • 1970-01-01
  • 2013-01-25
  • 2016-01-15
相关资源
最近更新 更多