我正在开发一个桌面应用程序,它需要连接到远程 MySQL 数据库服务器,目前我将连接所需的所有信息(服务器 IP、TCP 端口、用户名、密码、数据库名称)保存在配置文件调用app_config.property中。
我意识到这不是安全的做事方式,我想知道最安全和最专业的方式来保持这样的安全数据。
我是用 Java 7.0 开发的;我的意图是在 Windows 7 和 Ubuntu Linux 上运行它。
我正在开发一个桌面应用程序,它需要连接到远程 MySQL 数据库服务器,目前我将连接所需的所有信息(服务器 IP、TCP 端口、用户名、密码、数据库名称)保存在配置文件调用app_config.property中。
我意识到这不是安全的做事方式,我想知道最安全和最专业的方式来保持这样的安全数据。
我是用 Java 7.0 开发的;我的意图是在 Windows 7 和 Ubuntu Linux 上运行它。
除非您对该文件本身进行加密,否则存储在文本文件中的数据会以清晰的格式保存在那里。
正如其他回答者所说,最好将您的凭据存储在 MySQL 数据库本身中。对你的密码进行散列和加盐(为什么不使用胡椒呢?)
非常好的答案的有用链接:
编辑:
根据您的评论:
.htaccess文件夹)如果可能,不要将用户名和密码存储在配置文件中,要求用户在打开应用程序时提供用户名和密码,并在数据库上为用户创建登录名,并且只给该用户最低权限集他们需要运行应用程序的数据库表。
没有一种安全的方法可以做到这一点。你可以混淆、隐藏或做任何你想做的事情,但如果用户/密码在配置文件或代码中,它永远不会安全。有人总是可以访问数据/可执行文件并获取用户/密码,唯一的区别是获取该信息的难度(仅读取文件或必须对代码进行反向工程)。唯一安全的方法是让用户介绍该数据。
以一般的 PHP Web 应用程序为例,比如 Wordpress,它以明文形式保存 Mysql 登录。当然,普通用户看不到这一点,只有有权访问代码的用户才能看到。
我想说的是,如果可以不这样做,它可能会这样做。
您可以设置一个与数据库交互的 Web 服务,并更精确地限制对数据库的访问和权限,但我不确定这是否真的提高了安全性,而且我没有时间考虑。
您可以将每个表的数据库权限限制为任何需要的权限:选择、更新、删除和/或插入。