请解释 .NET 安全透明性模型的核心概念、其主要层级以及该模型在代码访问安全方面所起的作用。
考察说明
考查对 .NET 安全透明性模型的理解,包括其层级结构和安全机制。
回答思路
- 【回答框架 1】安全透明性模型是 .NET Framework 2.0 引入的一种代码访问安全机制,用于简化安全策略并提升安全性。它通过将代码分为不同层级来限制其权限,核心是 SecurityTransparent、SecuritySafeCritical 和 SecurityCritical 三种特性。
- 【回答框架 2】SecurityTransparent 代码只能执行完全信任或部分信任的操作,不能调用 SecurityCritical 代码,也不能进行任何不安全操作,如提升权限或访问非托管资源。它主要用于业务逻辑代码。
- 【回答框架 3】SecuritySafeCritical 代码是透明代码与关键代码之间的桥梁,它既可以被透明代码调用,也可以在完全信任环境下执行关键操作。它需经过严格的安全审查,确保不会因暴露关键权限而引发漏洞。
- 【回答框架 4】SecurityCritical 代码可以执行任何操作,包括调用非托管代码或进行权限提升,但必须是完全信任的代码。它无法被透明代码直接调用,只能由安全关键代码或安全透明关键代码调用。
- 【回答框架 5】该模型通过将安全审查集中在 SecurityCritical 和 SecuritySafeCritical 代码上,而透明代码则无需过多关注安全问题,从而降低了整个应用的安全审计成本。它是代码访问安全策略的简化版,重点在于隔离权限。
- 【关键点 1】安全透明性模型分为三个层级:透明、安全透明关键和安全关键。
- 【关键点 2】透明代码不能调用关键代码,也不能执行提升权限的操作。
- 【关键点 3】安全透明关键代码是透明与关键代码之间的桥接层,需经过安全审查。
- 【关键点 4】关键代码可执行任何操作,但必须为完全信任代码。
- 【关键点 5】该模型简化了安全审计,将安全关注点集中在关键层。
- 【易错点 1】不能将安全透明性模型等同于完全信任或 CAS 完全禁用。
- 【易错点 2】不能认为透明代码一定安全,它可能因调用不安全代码而引发问题。
- 【易错点 3】不能忽略安全透明关键代码的审查,否则可能成为安全漏洞入口。