我的场景如下,一个包含多个项目的.NET 4.0解决方案(一个主机和一些dll),一个(dll)特别使用MySQL .NET Connector以便只调用存储过程。我还用私钥签署了所有程序集。
我很好奇黑客能否以某种方式从连接字符串中获取数据库用户的密码(即使该用户只有EXECUTE权限)。
此外,我很好奇黑客是否能够找到我调用的存储过程以及他是否可以使用我的存储过程任意选择/插入/删除。
所有这一切都假设黑客只有编译解决方案的副本。
答案 0 :(得分:1)
您是否确信项目中的所有代码都不会受到SQL注入漏洞和本地文件包含漏洞的影响(并且随着它的发展将保持不变)?
答案 1 :(得分:1)
如果您在代码中对用户名和密码进行了硬编码,或者即使您将凭据存储在加密文件中,但加密密钥在您的代码中是硬编码的,那么它很容易被破解,因为.NET程序集未编译为机器代码。当您构建.NET程序集时,它会将您的VB.NET代码转换为MSIL代码,这只是一种较低级别的编程语言,仍然易于阅读。 Microsoft提供了一个名为MSIL Disassembler的免费工具(作为.NET Framework SDK的一部分),它允许您轻松查看任何已编译程序集的所有MSIL代码。有许多工具可以让您轻松获取MSIL代码并将其“反编译”为VB或C#代码。您会惊讶于使用.NET反编译器重现原始代码是多么容易。如果PDB可用,则输出与原始代码相似。因此,除非您使用某些第三方代码混淆或汇编加密工具,否则您的“编译”程序集很容易进行逆向工程。通常这不是什么大问题,但如果避免黑客攻击是一个高度关注的问题,那么你当然不应该在你的代码中加入任何秘密。