【发布时间】:2014-07-07 02:35:40
【问题描述】:
我不知道这个问题是否适合 SO,但我还是发布了它,因为我很好奇是否有任何具体的解决方案。
我在我的游戏中使用 MySQL 连接器,以便提供可靠且持久的连接来存储和检索游戏中游戏服务器的服务器列表。 我必须使用 MySQL DLL,因此很明显我使用 MySQL 进行连接。
这样就好了,不过上周我的一个黑客朋友提出要测试我的加密(MySQL密码以加密形式存储,并在运行时解密),他成功获得了所有密码,只用了一个缺少一个字符。
他告诉我,他在其中一个 MySQL DLL 中搜索了 mysql_connect() 函数,并在运行时截获了代码。
我查看了this,但没有答案涵盖我的情况(正在提取密码字符串的位置),我开始担心在我的使用情况下使用 MySQL 是否是一个错误,但是我相信在任何程序中都可能发生同样的事情。
我可以防止这种类型的漏洞利用吗?
我的decrypt 函数应该返回字符串以外的内容,还是可以截取函数中的任何内容?
链接问题的答案之一是这样说的:
最简单的方法是使用 xor 或 rot-13 等微不足道的方法对其进行加密,然后在使用时即时解密。这将消除对它们的随意观看,但不会阻止任何有丰富经验的人倒车。
我假设黑客设法反转加密,以泄露密码。
大概代码:
string server = "crysiswars2.communication.zyboxinternational.com";
mysql_connect(server, decrypt("randomuser1"), decrypt("randompassword2"), decrypt("myport"));`
【问题讨论】:
-
没有。你的黑客(你的朋友)只是简单地从调用堆栈中获取数据。此时解密已经完成。关于这个漏洞,他正在在盒子上有效地调试代码。一旦他在那里,你就无法阻止它。它是一种端点攻击(显然端点没有得到足够的保护。
标签: c++ mysql encryption