【发布时间】:2013-03-07 12:42:24
【问题描述】:
我需要为一家公司创建一个应用程序,他们希望人们登录该应用程序以获得不同的权限来执行不同的任务。
我最初的想法是创建一个 MySQL 数据库,将凭据硬编码到应用程序中,然后让应用程序连接到 MySQL 数据库。 MySQL 数据库将有一个名为“users”的表,该表将存储用户名、密码和权限。然后应用程序将查询服务器并执行身份验证。
最大的问题是将 MySQL 凭据硬编码到应用程序中。如果应用程序落入坏人之手,如果他们四处寻找凭据并开始删除表,他们可能会对 MySQL 数据库造成很大损害。
所以我想开发一个服务器来充当 MySQL 数据库的接口。例如,客户端应用程序将通过 TCP 连接到服务器,服务器连接到 MySQL 数据库。这样,MySQL 凭据就不会暴露给最终用户。但是,这意味着我必须开发一个服务器应用程序,它 a) 将更难为我的客户维护和部署(而不是仅仅设置 MySQL 服务器)和 b) 有可能引入更多错误,因为我有一个额外的系统我需要做(这与部署错误修复等有关)
所以我在想,与其在数据库中使用用户表并让应用程序使用硬编码凭据直接连接到 MySQL 服务器,不如为最终用户提供实际的 MySQL 用户凭据,他们将在其中输入应用程序连接到 MySQL 服务器。这意味着,如果有人拿到了应用程序,他们不会对 MySQL 数据库造成任何损害,但仍然存在最终用户将其凭据提供给错误人的风险。
让桌面应用程序连接到 MySQL 数据库的最佳方法是什么?除了我想到的 3 种之外,还有其他解决方案吗,或者您对我的解决方案有什么想法吗?
【问题讨论】:
-
如果这是一个客户端/服务器应用程序,那么肯定考虑至少在客户端应用程序和您的 MySQL 数据库之间实现一个瘦服务器层。尽管担心会增加复杂性,但它会显着提高整体解决方案的安全性和可维护性。
标签: c++ mysql security desktop-application