如何保护Resource Hacker的数据库连接细节?

时间:2012-01-08 10:55:32

标签: delphi

我的应用程序使用:Embarcadero Delphi 2010编写
我有一个名为INCLUDEFORM的表单,我包含在所有其他表单中,此表单包含TSQLQuery和TSQLConnection,其中包含数据库连接详细信息(db host,db name,db user和db pass),它们在设计时间。

昨天,我安装了一个名为(Resource Hacker)的软件,我试图使用这个软件打开我的应用程序,当我在寻找资源时,我已经看到我的应用程序中的所有表单,包括includeform,我点击了包含表单看到代码源,我看到了所有的代码源和daabase连接细节。

我尝试使用资源黑客打开其他类似的应用程序,但我没有看到任何重要的细节,只有Icon,Icon组和版本信息。


请问,是否可以从Resource Hacke加密我的源代码,或者至少包含INCLUDE FORM中包含重要数据库连接详细信息的代码。

三江源

3 个答案:

答案 0 :(得分:5)

您永远不应该在应用程序中存储连接详细信息,特别是因为它们可能(和密码应该)更改。你可以:

  • 如果您的数据库允许,请使用操作系统身份验证,数据库客户端将使用进程用户安全令牌对数据库进行身份验证。 Oracle,SQL Server和其他具有此类功能的
  • 询问用户连接时的信息。如果将用户/密码存储在可执行文件中,则根本没有用户/密码。就此而言,您可以使用已知用户设置数据库而不使用密码,并且安全级别相同。
  • 以加密形式在某处存储这些信息。当然,现在您必须安全地存储加密密钥。您可以使用Windows加密工具(可以使用用户或计算机帐户加密/解密数据),或者您(或您的用户)必须正确存储该密钥。

答案 1 :(得分:2)

您可以在表单创建时设置连接字符串,在代码中对所使用的字符串进行模糊/加密,而不是在设计时将其保留。通常,我不在开发中使用与实时数据库的连接,而是与测试数据库的连接,该测试数据库通常比生产数据库更受访问限制,例如:在防火墙后面,在NAT网关内。

简单的混淆机制包括执行字符串的XOR。更复杂的方法,如加密,需要添加库来执行加密/解密。

如果您只是想保护连接字符串,这些方法很容易实现。如果您正在尝试对表单数据进行完全混淆/加密,那么使用像UPX这样的打包程序是最简单的机制,但同样可以解决这个问题。

总的来说,你所做的任何事情都可能只会延迟获取数据库的连接字符串 - 这是由于基于软件的保护的性质 - 因为你拥有执行连接所需的一切,这只是一个问题在披露信息之前的时间和精力。

如果你真的想保护与数据库的连接,那么你需要为每个用户提供一个用户名/密码组合,并要求在执行时输入这些数据

答案 2 :(得分:0)

最简单和最便宜的方式是UPX,但它也是最容易入侵的方式。但是,这会让所有资源对于休闲的外观都不可见。

话虽如此,大多数产品都有现成的拆包商,这些产品实际上也是用于黑客保护的,所以你需要考虑你愿意花多少钱而不是保护水平。