我正在使用MySQL++ library by Tangentsoft从C ++程序连接到MySQL数据库。您将数据库凭据传递给Connection对象的connect方法以连接到您的数据库。显然,这是非常糟糕的:如果恶意某人会反汇编您的应用程序二进制文件,那么您的系统就会受到损害。
现在,使用C ++安全地处理数据库的解决方法就是使用HTTP客户端库,让PHP脚本与数据库进行交互(将您的凭据安全地存储在某个私有的.ini文件中)在你的服务器上)。这样做的问题在于,你没有像MySQL ++提供的库那样细节,例如查询流和C ++到SQL(和返回)类型转换。
因此,如果有人向新手程序员提供有关如何安全地使用像MySQL ++这样的库的建议,那么如果你愿意分享它们,我会很感激。
答案 0 :(得分:0)
我也使用MySQL ++,虽然您必须向Connection
构造函数提供连接详细信息,但没有理由将这些内容硬编码到您的二进制文件中。
我从磁盘上的/etc/<productname>.conf
文件中读取它们,然后将生成的std::string
对象传递给构造函数。这样,配置文件的安全性由系统管理员决定。最终,您的应用程序必须知道凭证以某种方式,但您可以免除几乎所有保护它们的责任。至关重要的是,在应用程序本身中嵌入的特定数据库服务器的凭据绝对不会。
无论如何,您必须这样做,除非您希望您的应用程序只使用一个数据库服务器,并且只使用一组不变的凭据。