.Net动态插件加载权限

时间:2008-08-18 09:10:56

标签: c# .net plugins assemblies dynamics-crm

您可以为必须执行以下操作的系统提供哪些建议:

加载插件(并最终执行它们),但有两种加载这些插件的方法:

  • 仅加载授权插件 (由业主开发 软件)
  • 加载所有插件

我们需要合理保证授权插件是真正的交易(未经修改)。但是,所有插件必须是单独的组件。我一直在寻找为插件使用强命名程序集,公钥存储在加载器应用程序中,但对我来说,这似乎太容易修改加载器应用程序中的公钥(如果用户如此倾向),无论加载器应用程序的任何混淆。还有更安全的想法吗?

4 个答案:

答案 0 :(得分:0)

基本上,如果您将代码放在别人的机器上,那么就没有绝对的安全保证。

你可以查看各种安全技巧,但最后,代码在他们的机器上,所以它是你无法控制的。

如果最终用户加载未经授权的插件,您会失去多少?

答案 1 :(得分:0)

  

如果最终用户加载未经授权的插件,您会损失多少?

不可否认,这种情况不会经常发生,但是如果确实发生了这种情况,我们会失去很多,我虽然知道我们不会产生任何100%的安全保障,但我想让它足以阻止人们做这件事。

关于使用具有完整强名称的简单动态加载的令人讨厌的事情是,即使插件已签名,加载应用程序中的所有操作都需要加载任何其他程序集的简单字符串文字更改。

答案 2 :(得分:0)

您可以扩大您的问题:“我如何保护我的.net程序集免受逆向工程?”

答案是 - 你做不到。对于那些还没有看过它的人,只需查看“反射器”,并在一些天真的exe上运行它。

(顺便说一句,只要您没有随附的en / decryption硬件,这总​​是代码的答案,

混淆试图使逆向工程比开发更难(花费更多钱),并且对于某些类型的算法它会成功。

答案 3 :(得分:0)

签署程序集。

  

强名签名或强命名,   全局提供软件组件   不能欺骗的独特身份   由别人。使用强名称   保证该组件   依赖关系和配置   语句映射到正确的右侧   组件和组件版本。

http://msdn.microsoft.com/en-us/library/h4fa028b(VS.80).aspx