加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 如何限制某些装配的反射?

发布时间:2020-12-15 19:49:31 所属栏目:百科 来源:网络整理
导读:在我的.net应用程序中,我想限制对某些程序集的反射.我的意思是我希望我的特定程序集只能通过一些预定义的程序集来反映,而不是通过任何其他程序集.我怎样才能做到这一点? 编辑: This tool完全关闭.NET反汇编和程序集的反编译.我想允许一些预定义的程序集来
在我的.net应用程序中,我想限制对某些程序集的反射.我的意思是我希望我的特定程序集只能通过一些预定义的程序集来反映,而不是通过任何其他程序集.我怎样才能做到这一点?

编辑:

This tool完全关闭.NET反汇编和程序集的反编译.我想允许一些预定义的程序集来反映这个程序集,但是限制其他人这样做.我想要一些应该被声明为装配的东西,例如: AssemblyOne已授予AssemblyTwo你可以反映我的权限,因此只有AssemblyTwo能够以完全信任的方式反映它,而不是其他任何人.

解决方法

您链接的工具基本上将整个应用程序编译为本机代码.这并没有真正“关闭”反射或其他任何东西,它只是将应用程序变成完全不同的东西,它不再是字节码,而不再是技术上的.NET组件.

具有完全信任的呼叫者始终可以在.NET程序集及其内部的所有内容上使用反射.除了(a)混淆,任何有足够的耐心和决心的人都可以去混淆,或者(b)编译成本机代码,这会阻止任何形式的反射(以及许多其他有用的功能),你无法防止这种情况发生.发生了,你肯定不能将它限制在特定的程序集.

与其他答案所说的相反,ReflectionPermissionAttribute不会阻止调用者反映您的代码;相反,它控制从该代码到Reflection API的访问.这里不会有任何帮助.

为什么隐藏代码或类结构如此重要?除非你是为NSA工作,否则大多数代码都没有那么有价值/秘密,而且大多数应用程序在给定足够的时间和资源的情况下很容易进行逆向工程.实际上,攻击者或剽窃者从复制代码中复制代码和/或使用Reflection来发现您的API时获得的收益很少.

我想我只能为自己说话,但是如果有一天免费实现一个很酷的功能或投资试图保护内部代码,我会一直致力于实际增加价值的新功能.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读