C++ C++;与数据库的安全连接

C++ C++;与数据库的安全连接,c++,database,c,reverse-engineering,C++,Database,C,Reverse Engineering,我一直在想这个问题,希望你们中的一个人能知道答案 我在因特网上听说过,像C++那样的软件编码是可逆的,据我所知,其他代码可以从已经编译的exe .< /p >找到源代码。 那么,如何保护数据库连接?我的意思是,如何保持数据库信息及其每个mysql查询的私有性 mysql_real_connect(conn, "localhost", "user", "passwd", NULL, 0, NULL, 0) 例如,在上面的代码中,当保留了代码并且用户能够访问源代码时,如何确保用户信息和密码的安全

我一直在想这个问题,希望你们中的一个人能知道答案

我在因特网上听说过,像C++那样的软件编码是可逆的,据我所知,其他代码可以从已经编译的exe .< /p >找到源代码。 那么,如何保护数据库连接?我的意思是,如何保持数据库信息及其每个mysql查询的私有性

mysql_real_connect(conn, "localhost", "user", "passwd", NULL, 0, NULL, 0)
例如,在上面的代码中,当保留了代码并且用户能够访问源代码时,如何确保用户信息和密码的安全

谢谢


编辑:同样适用于C或任何软件开发代码。

第一件事是:您不应该将带有硬编码用户名和密码的二进制文件传递给用户,而是允许用户在某种形式的配置中输入这些文件。如果他们应该与您的系统对话,您应该为每个用户确认一个用户帐户

在将密码存储在配置文件中时,您可以将其加密存储(硬编码时也可以这样做,但这是一种糟糕的做法),并在需要时解密。当然,恶意用户可以尝试识别加密算法和密码短语,只有完全不存储或使用基于硬件的vrypto系统(可能是加密狗)才能防止这种情况发生


最后的问题是:你想让它变得多困难?拥有(特别是物理)访问权限和足够“需要”的人总会找到办法。

添加第三层,即一个服务器,负责所有查询和与数据库对话。搜索REST。但是,我的意思是,如果有人设法获取源代码,您如何保证代码的安全?密码加密只能使密码安全。源代码呢?你不能完全理解。你能做的是让编译器做更多的优化或去除符号和其他技术,从而使反汇编变得更加复杂。使用Web服务器处理查询比将myqsl_uuu查询写入程序更值得推荐吗?答案只能是“视情况而定”,但通常是肯定的,提供更高级的抽象层是有意义的。为什么高级API降低了安全相关的向量,允许您进行修改而不破坏客户端,允许更精细的访问控制和验证,如果您必须共享C++中的应用程序,您会使用网页来处理所有查询,或者将其包含在C++源代码中吗?