如何限制对程序集的访问?

时间:2011-02-24 02:05:42

标签: c# code-access-security

如何根据已定义的前提条件限制库的加载和执行?例如,如果我向客户端分发使用外部库的应用程序,我如何确保外部库仅用于应用程序而不是客户端用于其他目的?

代码访问安全性是答案吗?如果是这样,是否有一个很好的例子说明如何在上述情况下应用它?

谢谢!

更新:我无法使用服务来保护逻辑。我必须在程序集中提供代码,并希望保护它不被用于构建其他产品。

4 个答案:

答案 0 :(得分:4)

限制访问的最佳方法是将逻辑从程序集移动到服务层。如果你真的担心保护组件中的逻辑,这是最好的方法。

请记住,如果客户手中有程序集并且真正有动力使用它,那么任何机制都可以通过足够的努力来打败。这就是为什么服务层是一个完美的解决方案,因为它使您的应用程序可以访问逻辑,而不允许客户端自己获得实现。

答案 1 :(得分:0)

您应该查看代码混淆 Nothing ,这样做会阻止某人专注于使用程序集中包含的逻辑,但他们认为合适,但是混淆会使其变得更加困难并且有希望阻止大多数人。

有关详细信息,请参阅this question

答案 2 :(得分:0)

有一个构建选项,只允许友好的程序集使用你的,但这意味着你也可以同时签署你的程序集和客户端。我怀疑你想要做什么可能没有某种服务层或服务器逻辑的身份验证/连接限制。遗憾。

答案 3 :(得分:0)

这里只是一个想法,绝对不是最安全或最好的方式。也许只是一个小工作。

如何将程序集移动到全局程序集缓存(GAC)并修改可执行代码以访问GAC中存在的程序集,而不是使用可执行文件发送程序集?然后,您可以将程序集的名称更改为客户端无法理解的某个垃圾名称(或您认为合适的任何名称)。因此,在装配森林中找到你的装配几乎是不可能的。

希望这有帮助!

此致

萨马