类型安全

类型安全代码指访问被授权可以访问的内存位置。例如,类型安全代码不能从其他对象的私有字段读取值。它只从定义完善的允许方式访问类型才能读取。类型安全的代码具备定义良好的数据类型。在实时(JIT)编译期间,可选的验证过程检查要实时编译为本机代码的方法的元数据和 Microsoft 中间语言(MSIL),以验证它们是否为类型安全,如果代码具有忽略验证的权限,则将跳过此过程。有关验证更多信息。

尽管类型安全验证对于运行托管代码不是强制的,但类型安全在程序集隔离和安全性强制中起着至关重要的作用。如果代码是类型安全的,则公共语言运行库可以将程序集彼此间完全隔离。这种隔离有助于确保程序集之间不会产生负面影响,且提高应用程序的可靠性。即使类型安全组件的信任级别不同,它们也可以在同一过程中安全地执行。如果代码不是类型安全的,则会出现不需要的副作用。例如,运行库无法阻止非托管代码调用到本机(非托管)代码中和执行恶意操作。当代码是类型安全时,运行库的安全性强制机制确保代码不会访问本机代码,除非它有访问本机代码的权限。所有非类型安全的代码都必须通过传递的枚举成员 SkipVerification 授予 SecurityPermission 后才能运行。类型安全的代码是代码访问中非常明确,允许的数据类型的方法。微软已经提供了。NET 框架称为 PEVerify 工具。PEVerify 可以被用来确保 CLR 将只执行代码是可验证的类型安全的。