如何根据已定义的前提条件限制库的加载和执行?例如,如果我向客户端分发使用外部库的应用程序,我如何确保外部库仅用于应用程序而不是客户端用于其他目的?
代码访问安全性是答案吗?如果是这样,是否有一个很好的例子说明如何在上述情况下应用它?
谢谢!
更新:我无法使用服务来保护逻辑。我必须在程序集中提供代码,并希望保护它不被用于构建其他产品。
答案 0 :(得分:4)
限制访问的最佳方法是将逻辑从程序集移动到服务层。如果你真的担心保护组件中的逻辑,这是最好的方法。
请记住,如果客户手中有程序集并且真正有动力使用它,那么任何机制都可以通过足够的努力来打败。这就是为什么服务层是一个完美的解决方案,因为它使您的应用程序可以访问逻辑,而不允许客户端自己获得实现。
答案 1 :(得分:0)
您应该查看代码混淆 Nothing ,这样做会阻止某人专注于使用程序集中包含的逻辑,但他们认为合适,但是混淆会使其变得更加困难并且有希望阻止大多数人。
有关详细信息,请参阅this question
答案 2 :(得分:0)
有一个构建选项,只允许友好的程序集使用你的,但这意味着你也可以同时签署你的程序集和客户端。我怀疑你想要做什么可能没有某种服务层或服务器逻辑的身份验证/连接限制。遗憾。
答案 3 :(得分:0)
这里只是一个想法,绝对不是最安全或最好的方式。也许只是一个小工作。
如何将程序集移动到全局程序集缓存(GAC)并修改可执行代码以访问GAC中存在的程序集,而不是使用可执行文件发送程序集?然后,您可以将程序集的名称更改为客户端无法理解的某个垃圾名称(或您认为合适的任何名称)。因此,在装配森林中找到你的装配几乎是不可能的。
希望这有帮助!
此致
萨马