检查命令性安全

更新:2007 年 11 月

TypeName

ReviewImperativeSecurity

CheckId

CA2103

类别

Microsoft.Security

是否重大更改

原因

某方法使用命令性安全,并且可能使用可以在请求处于活动状态时更改的状态信息或返回值来构造权限。

规则说明

与声明性安全相反,命令性安全使用托管对象来指定代码执行期间的权限和安全操作。而声明性安全使用属性将权限和操作存储在元数据中。命令性安全极为灵活,因为您可以使用直到运行时才可用的信息来设置权限对象的状态和选择安全操作。伴随这种灵活性而来的是一定程度的风险:在操作生效时,用于确定权限状态的运行时信息不会保持不变。

应尽可能使用声明性安全。声明性请求更易于理解,且可以通过工具(例如 权限查看工具 (Permview.exe))来检测。

如何修复冲突

检查命令性安全请求,以确保权限的状态不依赖于会在权限的使用期间发生更改的信息。

何时禁止显示警告

如果权限不依赖于发生更改的数据,则可以安全地禁止显示此规则发出的警告。但是,最好还是要将命令性请求更改为其声明性等效项。

请参见

参考

权限查看工具 (Permview.exe)

其他资源

代码安全维护指南

数据访问