在配置文件中保存密码的安全方法

信息安全 加密 密码管理 配置
2021-08-17 17:31:35

我正在开发一个桌面应用程序,它需要连接到远程 MySQL 数据库服务器,目前我将连接所需的所有信息(服务器 IP、TCP 端口、用户名、密码、数据库名称)保存在配置文件调用app_config.property中。
我意识到这不是安全的做事方式,我想知道最安全和最专业的方式来保持这样的安全数据。

我是用 Java 7.0 开发的;我的意图是在 Windows 7 和 Ubuntu Linux 上运行它。

4个回答

除非您对该文件本身进行加密,否则存储在文本文件中的数据会以清晰的格式保存在那里。

正如其他回答者所说,最好将您的凭据存储在 MySQL 数据库本身中。对你的密码进行散列和加盐(为什么不使用胡椒呢?)

非常好的答案的有用链接:

  1. 如何安全地散列密码?
  2. 如何储存盐?
  3. Pepper的目的是什么?

编辑:

根据您的评论:

  • 您要么想做与 Wordpress、Joomla 和其他著名的 CMS 一样的事情:创建一个单独的表来存储此类信息。
  • 或者,您可能将 Web 应用程序托管在服务器上,而您在该服务器上的 DB 和表的数量受到限制,您可以在该服务器上创建:在这种情况下,您可以创建 PHP 配置文件(而不是文本文件)存储该信息的位置并在这种情况下遵循良好做法(例如使用文件保护该文件所在的.htaccess文件夹)

如果可能,不要将用户名和密码存储在配置文件中,要求用户在打开应用程序时提供用户名和密码,并在数据库上为用户创建登录名,并且只给该用户最低权限集他们需要运行应用程序的数据库表。

https://www.digitalocean.com/community/tutorials/how-to-create-a-new-user-and-grant-permissions-in-mysql

没有一种安全的方法可以做到这一点。你可以混淆、隐藏或做任何你想做的事情,但如果用户/密码在配置文件或代码中,它永远不会安全。有人总是可以访问数据/可执行文件并获取用户/密码,唯一的区别是获取该信息的难度(仅读取文件或必须对代码进行反向工程)。唯一安全的方法是让用户介绍该数据。

以一般的 PHP Web 应用程序为例,比如 Wordpress,它以明文形式保存 Mysql 登录。当然,普通用户看不到这一点,只有有权访问代码的用户才能看到。

我想说的是,如果可以不这样做,它可能会这样做。

您可以设置一个与数据库交互的 Web 服务,并更精确地限制对数据库的访问和权限,但我不确定这是否真的提高了安全性,而且我没有时间考虑。

您可以将每个表的数据库权限限制为任何需要的权限:选择、更新、删除和/或插入。