【发布时间】:2017-11-24 16:58:08
【问题描述】:
我有一个程序集,用于验证我的应用程序的安全性,例如许可证。 我如何授予每次我的应用程序调用验证方法时,这是从正确的程序集中加载的? 我想防止有人创建伪造的程序集来绕过这些验证。
通过添加.snk 来获得强命名密钥,这会解决我的问题吗?
例如如果我的应用程序使用MySecurity.dll,如果其他人创建了一个同名程序集并在bin 文件夹中覆盖它,我的应用程序会知道这不是正确的程序集吗?
我很担心,因为我们的解决方案使用两种验证方式,本地使用公共证书作为许可证文件,以及在线(如果有互联网连接)。但其中任何一个都可以轻松绕过。
【问题讨论】:
-
强命名机制正是针对这种情况而存在的。
-
@Gusdor 不,不是。如果是最终用户将无法disable it via the command line。存在强命名以防止来自多个供应商的程序集的名称冲突。
-
@ScottChamberlain 完整性在文档docs.microsoft.com/en-us/dotnet/framework/app-domains/… 中特别提及
-
这是关于在没有最终用户同意的情况下通过第三方修改文件的完整性。它不能防止最终用户尝试替换或修改文件
标签: c# .net .net-assembly