权限请求

更新:2007 年 11 月

权限请求是使代码具有安全性判别能力的主要方法。您应当将权限请求包括在访问受保护资源的应用程序中。有关更多信息,请参见代码访问安全性基础知识。通过请求,您可以进行如下两项操作:

  • 请求在运行代码前代码必须得到的最低限度的权限。

  • 确保代码只得到实际需要的权限。

下面的代码示例说明了基本权限请求。

<assembly: FileIOPermissionAttribute(SecurityAction.RequestMinimum, Write := "C:\test.tmp"), _
assembly: PermissionSet(SecurityAction.RequestOptional, Unrestricted := False)>  
[assembly:FileIOPermissionAttribute(SecurityAction.RequestMinimum, Write="C:\\test.tmp")]
[assembly:PermissionSet(SecurityAction.RequestOptional,Unrestricted=false)]

此示例告知 .NET Framework 安全系统只能在收到对 C:\test.tmp 的写权限时才能运行代码。如果代码遇到了不授予此权限的安全策略,则将引发 PolicyException 且不运行代码。使用这一请求,您可以确保只有将该权限授予代码时,代码才会运行;且不必担心由于权限太少而导致出现错误。

这一示例同时告知系统不需要其他权限。如果没有这一点,策略所选择的要授予代码的任何权限都将被授予代码。虽然额外的权限不会造成损害,但是,少授予权限可以消除某些无法预料的安全问题。带有代码所不需要的权限可能会导致出现安全问题。

将代码所收到的权限限制到最少特权的另一种方法是列出希望拒绝的特定权限。如果您要求所有权限均为可选的,并且将特定权限排除在该请求之外,则通常可以拒绝权限。有关更多信息,请参见拒绝权限

请参见

其他资源

代码安全维护指南