.Net security noob here ...防止其他人加载我的程序集的最简单方法是什么?
背景:虽然我真的在寻找'足够好'的保护(有足够的时间/金钱/智慧,有人可以成功破解,破解和攻击),这似乎应该已经解决了问题,我只是想念它。
以下是我认为的事情:
虽然强命名可以用作安全层,但事实并非如此 根据{{3}}(见警告:不要依赖强名称) 安全。它们只提供独特的身份。)
在那个^注意我遇到了我无法做到的情况 加载第三方程序集(Aspose我认为它是)因为他们做了 没有签署他们的集会,但我的全部都是。所以我必须这样做 ildasm他们的集会,用我们自己的snk签名,然后ilasm回来) 为了使用他们的图书馆。 因此,强大的命名似乎不是一个 对我来说是一个很好的安全机制。 HOWEVER ......简单的检查怎么样, 在代码中,验证调用程序集是否与my签名 公钥令牌?这有效吗?
如果强烈命名不应该用于我正在尝试的内容 完成,正在实施Authenticode数字签名检查 在DLL上路线越好(似乎wintrust.dll可以帮助 有了这个)?
我一直在经历几家供应商的混淆工具 许多人都带有许可证和各种东西。我很可能 使用一点混淆隐藏一些敏感部分, 但是我仍然希望有一种预防机制 有人从加载我的敏感库,而不必使用 通常附带的字符串和代码加密等功能 绩效(和其他)成本。
回到问题,阻止某人加载我的程序集的最简单的方法是什么?
答案 0 :(得分:4)
事实上,您无法100%保证您的程序集不会被下载并以不良方式使用。但是一些措施可以帮助你:
答案 1 :(得分:2)
显而易见,但可能没那么有用:最简单的方法是删除程序集。
答案 2 :(得分:2)
我认为你想要的是阻止人们对你的装配进行逆向工程,对吧?像JustDecompiler这样的工具可以轻松获得汇编代码。 要对代码进行模糊处理,您可以随时使用某些付费产品(Eazfuscator)或某些开源代码(Obfuscar或ConfuserEx)。
答案 3 :(得分:1)
一种选择(可能或不可行)是不给它们组装。如果您可以基于Web(例如Software as a Service)创建应用程序,那么(使用适当安全的服务器)您的客户端将无法访问程序集。