【问题标题】:.NET Plug In Security.NET 插件安全
【发布时间】:2009-08-31 03:25:02
【问题描述】:
我们正在为企业内的现有应用程序开发 .NET 插件(类库)。它是一个桌面应用程序,预先支持插件。
1) 是否有保护插件的机制以确保它仅由现有桌面应用程序调用? (我们无法控制桌面应用程序代码库)
2) 有没有一种方法可以阻止恶意用户反汇编代码库(除了混淆)和/或调用方法而不管其可见性如何?我知道我们可以在适当的地方使用身份验证/授权,但想知道是否有替代方法。
3) 在插件配置文件中加密敏感数据的标准机制是什么?
【问题讨论】:
标签:
.net
security
class
plugins
【解决方案1】:
-
您可以研究插件和应用程序之间的某种类型的数字签名或公钥/私钥交换。然而,保护私钥几乎是不可能的,除非您使用某种在线身份验证,其中私钥永远不会离开您的服务器。
对于不太安全的方法,您可以在插件中使用 Assembly.GetEntryAssembly() 方法来获取调用插件的 .NET 可执行文件的详细信息。然后,例如,如果条目程序集名称不是您所期望的,请停止。
并非如此,事实上 .NET 实际上提供了诸如反射之类的机制,使反汇编变得简单。混淆是 .NET 中的“最佳”方法,尽管它不会阻止更加坚定/熟练的黑客。您可以考虑将您的程序集转换为本机代码,但这确实违背了首先使用 .NET 的目的,因为您的代码与特定平台相关联。原生代码当然也可以反汇编。
查看 ConfigurationManager 类和 SectionInformation.ProtectSection() 方法以及 DataProtectionConfigurationProvider 提供程序。