1

我正在使用Tangentsoft 的 MySQL++ 库从 C++ 程序连接到 MySQL 数据库。您将数据库凭据传递给 Connection 对象的 connect 方法以连接到您的数据库。显然,这很糟糕:如果有人恶意反汇编您的应用程序二进制文件,您的系统就会受到威胁。

现在,从 C++ 安全地使用数据库的一种解决方法是只使用 HTTP 客户端库并让 PHP 脚本之类的东西与您的数据库交互(您的凭据安全地存储在服务器上某个私有位置的 .ini 文件中) )。这样做的问题是你没有得到像 MySQL++ 这样的库提供的细节,例如查询流和 C++ 到 SQL(和返回)类型转换。

因此,如果有人对如何安全地使用 MySQL++ 之类的库向新手程序员提出建议,如果您愿意分享,我将不胜感激。

4

1 回答 1

0

我也使用 MySQL++,尽管您必须将连接详细信息提供给Connection构造函数,但没有理由将这些信息硬编码到您的二进制文件中。

/etc/<productname>.conf我从磁盘上的文件中读取它们,然后将生成的std::string对象传递给构造函数。这样,配置文件的安全性就由系统管理员负责了。最终,您的应用程序必须以某种方式知道凭据,但您可以免除自己保护它们的几乎所有责任。至关重要的是,在任何时候都不是嵌入在应用程序本身中的特定数据库服务器的凭据。

无论如何,您都必须这样做,除非您希望您的应用程序只使用一个数据库服务器,并且使用一个单一的、不变的凭据集。

于 2018-04-01T13:53:17.990 回答