我的应用程序使用:Embarcadero Delphi 2010编写
我有一个名为INCLUDEFORM的表单,我包含在所有其他表单中,此表单包含TSQLQuery和TSQLConnection,其中包含数据库连接详细信息(db host,db name,db user和db pass),它们在设计时间。
昨天,我安装了一个名为(Resource Hacker)的软件,我试图使用这个软件打开我的应用程序,当我在寻找资源时,我已经看到我的应用程序中的所有表单,包括includeform,我点击了包含表单看到代码源,我看到了所有的代码源和daabase连接细节。
我尝试使用资源黑客打开其他类似的应用程序,但我没有看到任何重要的细节,只有Icon,Icon组和版本信息。
请问,是否可以从Resource Hacke加密我的源代码,或者至少包含INCLUDE FORM中包含重要数据库连接详细信息的代码。
三江源
答案 0 :(得分:5)
您永远不应该在应用程序中存储连接详细信息,特别是因为它们可能(和密码应该)更改。你可以:
答案 1 :(得分:2)
您可以在表单创建时设置连接字符串,在代码中对所使用的字符串进行模糊/加密,而不是在设计时将其保留。通常,我不在开发中使用与实时数据库的连接,而是与测试数据库的连接,该测试数据库通常比生产数据库更受访问限制,例如:在防火墙后面,在NAT网关内。
简单的混淆机制包括执行字符串的XOR。更复杂的方法,如加密,需要添加库来执行加密/解密。
如果您只是想保护连接字符串,这些方法很容易实现。如果您正在尝试对表单数据进行完全混淆/加密,那么使用像UPX这样的打包程序是最简单的机制,但同样可以解决这个问题。
总的来说,你所做的任何事情都可能只会延迟获取数据库的连接字符串 - 这是由于基于软件的保护的性质 - 因为你拥有执行连接所需的一切,这只是一个问题在披露信息之前的时间和精力。
如果你真的想保护与数据库的连接,那么你需要为每个用户提供一个用户名/密码组合,并要求在执行时输入这些数据
答案 2 :(得分:0)
最简单和最便宜的方式是UPX,但它也是最容易入侵的方式。但是,这会让所有资源对于休闲的外观都不可见。
话虽如此,大多数产品都有现成的拆包商,这些产品实际上也是用于黑客保护的,所以你需要考虑你愿意花多少钱而不是保护水平。