1

我的场景如下,一个 .NET 4.0 解决方案有几个项目(一个主机和一些 dll),一个(dll)特别是使用 MySQL .NET 连接器,以便只调用存储过程。我还用私钥签署了我所有的程序集。

我很好奇黑客是否能以某种方式从连接字符串中获取数据库用户的密码(即使该用户只有执行权限)。

另外我很好奇黑客是否能够找出我调用的存储过程,以及他是否可以使用我的存储过程任意选择/插入/删除。

所有这一切都假设黑客只有一份已编译解决方案的副本。

4

2 回答 2

1

您是否确信项目中的所有代码都不会受到 SQL 注入漏洞和本地文件包含漏洞等漏洞的影响(并且会随着它的发展而保持不变)?

于 2012-05-10T10:31:34.937 回答
1

如果您在代码中硬编码了用户名和密码,或者即使您将凭据存储在加密文件中,但加密密钥在您的代码中是硬编码的,那么它很容易被破解,因为没有编译 .NET 程序集到机器码。当您构建一个 .NET 程序集时,它会将您的 VB.NET 代码转换为 MSIL 代码,这只是一种仍然易于阅读的较低级别的编程语言。Microsoft 提供了一个名为 MSIL Disassembler 的免费工具(作为 .NET Framework SDK 的一部分),它允许您轻松查看任何已编译程序集的所有 MSIL 代码。有许多可用的工具可让您轻松获取 MSIL 代码并将其“反编译”为 VB 或 C# 代码。您会惊讶于使用 .NET 反编译器重现原始代码是多么容易。如果 PDB 可用,输出与原始代码惊人地相似。因此,除非您使用某些第三方代码混淆或程序集加密工具,否则您的“编译”程序集很容易被反向工程。通常这没什么大不了的,但如果避免黑客攻击是一个高度关注的问题,那么您当然不应该在代码中放入任何秘密。

于 2012-05-10T12:33:23.087 回答