.NET插件安全性

时间:2009-08-31 03:25:03

标签: .net security class plugins

我们正在为企业内的现有应用程序开发.NET插件(类库)。它是一个桌面应用程序,它预先支持插件。

1)是否有一种机制来保护插件以确保它仅由现有的桌面应用程序调用? (我们无法控制桌面应用程序代码库)

2)是否有一种方法可以阻止恶意用户反汇编代码库(除了模糊处理)和/或调用方法而不管其可见性如何?我知道我们可以在适当的地方使用身份验证/授权,但是想知道是否有替代方案。

3)加密插件配置文件中的敏感数据的标准机制是什么?

1 个答案:

答案 0 :(得分:1)

  1. 您可以查看插件和应用程序之间的某种类型的数字签名或公钥/私钥交换。但是,除非您使用某种在线身份验证,其中私钥永远不会离开您的服务器,否则保护私钥几乎是不可能的。

    对于不太安全的方法,您可以使用插件中的Assembly.GetEntryAssembly()方法来获取调用插件的.NET可执行文件的详细信息。然后,例如,如果条目程序集名称不符合您的预期,请停止。

  2. 事实上,实际上.NET实际上提供了诸如Reflection之类的机制,使得反汇编变得简单。混淆是.NET中的“最佳”方法,尽管它不会阻止更多有决心/熟练的黑客。你可以将你的程序集看成本机代码,但是当你的代码与特定平台绑定时,这首先会破坏使用.NET的习惯。本地代码当然也可以被反汇编。

  3. 查看ConfigurationManager类和SectionInformation.ProtectSection()方法以及DataProtectionConfigurationProvider提供程序。