有人可以解释一下吗?我在互联网上找不到任何东西,一切都在谈论如何以某种方式解决这个问题,但没有什么能说清楚到底是什么.
什么是完全可信的组件,它们如何彼此不同?
我有一个MS认证考试,这是我唯一不理解的话题.
编辑:谢谢你们.现在我对.NET的安全性有了更好的理解.我能够通过认证考试.
.NET实现所谓的安全模型代码访问安全.非托管代码以启动应用程序的用户的权限和权限运行,即使代码恰好源自邪恶源.
托管代码需要提供其来源的证据 ; 有多种方法可以做到这一点(例如,代码是用某个密钥签名的,代码是从某个URL下载的,代码存在于磁盘上的某个目录中,等等).根据该证据,将程序集分组,为其应用策略.策略可以授予代码组某些权限,主要是访问系统资源(执行DNS查找,打开网络连接,访问"隔离存储",访问本地文件系统(所有这些,或只是选定的目录),访问注册表,访问网络共享等).控制面板中有一个工具可用于定义此类策略.
当程序集尝试执行某些受限操作时,将进行权限检查.如果授予访问权限,则操作继续.如果检查失败,则抛出异常.检查通常涉及堆栈遍历(即,该操作必须信任所有调用者),但也有例外.
作为一种特殊情况,可以将"完全信任"分配给程序集,授予所有权限.虽然我之前没有听过"部分信任"一词,但我认为它指的是拥有某些权利但不是完全信任的议会.
请理解这只是一个概述 - 关于代码访问安全性还有很多要说的.
一个完全信任的装配有无限制集合的代码访问安全权限,允许代码访问所有资源类型和执行特权操作,只受操作系统的安全性.例如,如果用户Bob无法访问文件Y,则Bob的用户空间中也无法运行完全信任程序集.
甲部分信任组件意味着代码在小于完全信任运行..NET Framework具有多个预定义的信任级别,您可以直接使用这些级别,也可以自定义以满足特定的安全要求.例如,您可以通过拒绝SQLClientPermission来阻止程序集访问SQL数据库.
装配的信任等级也可以通过其来源而减少.例如,来自网络共享(在较旧版本的.NET中)的代码比来自本地计算机的代码更受信任,因此其执行特权操作的能力受到限制.