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