1

对于必须执行以下操作的系统,您可以给出哪些建议:

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

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

而且我们需要相当安全地确保授权插件是真实的(未修改的)。但是,所有插件都必须在单独的程序集中。我一直在考虑为插件使用强命名程序集,并将公钥存储在加载程序应用程序中,但对我来说,修改加载程序应用程序中的公钥(如果用户如此倾向于)似乎太容易了,不管加载程序应用程序的任何混淆。还有更安全的想法吗?

4

4 回答 4

0

基本上,如果您将代码放在其他人的机器上,则没有绝对的安全保证。

您可以查看各种安全技巧,但最后,代码在他们的机器上,因此不受您的控制。

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

于 2008-08-18T09:14:30.973 回答
0

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

诚然,这不会经常发生,但是当/如果确实发生时,我们会损失很多,虽然我知道我们不会产生任何 100% 安全的东西,但我想让它成为一个足以阻止人们这样做的障碍。

使用具有完整强名称的简单动态加载的烦人之处在于,即使插件已签名,只需在加载器应用程序中进行简单的字符串文字更改即可加载任何其他程序集。

于 2008-08-18T09:20:43.910 回答
0

你可以扩大你的问题:“我怎样才能保护我的 .net 程序集免受逆向工程?”

答案是——你不能。对于那些还没有看过它的人,只需查找“reflector”,然后在一些幼稚的 exe 上运行它。

(顺便说一句,这始终是您无法控制的代码的答案,只要您没有随它一起发送加密/解密硬件),

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

于 2008-08-18T10:48:55.947 回答
0

签署程序集。

强名称签名或强命名为软件组件提供了一个全球唯一的身份,其他人无法对其进行欺骗。强名称用于保证组件依赖项和配置语句映射到正确的组件和组件版本。

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

于 2009-04-25T12:06:59.947 回答