ASP.NET Lab

The Best Web, The Best Future

博客园 首页 新随笔 订阅 管理

许可请求是能够让你的代码了解安全的主要方式。并且你应该在访问被保护资源的应用程序中包括许可请求。关于更多信息,请参考:[代码访问安全基础]。另外,还需要你做两件事情:

  • 为你的代码而请求到必需接受来运行的最小许可。
  • 确保你的代码只接收它实际需要的许可。

下列代码范例示范了一个基本的许可请求。

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

这个范例告诉 .NET Framework 的安全系统:除非代码接收到对于文件 C:\test.tmp 的写入许可,否则代码都不应该被运行。如果代码始终遇到不批准这个许可的安全策略,那么一个 PolicyException 异常会被触发并且代码不会被运行。通过使用这个请求,你可以确保你的代码只在它被批准了这个许可的时候才被运行,并且你也不用担心通过持有过少的许可而导致的错误。

这个范例同样告诉系统:并不需要任何额外的许可。缺少了这个,无论选择什么样的许可策略,你的代码都将是能够被批准的。虽然额外的许可并不会造成损害,但是持有更少的许可仍然能够预防一些无法预料的安全问题。然而为你的代码而传送不需要的许可却能够导致安全问题。

允许你的代码接收最少特权的另外一种限制方式就是列出你需要拒绝的特定许可。许可通常会在你询问所有可选的许可并且从请求中排除特殊许可的时候被拒绝。关于更多信息,请参考:[拒绝许可]。

posted on 2007-02-06 11:37  Laeb  阅读(318)  评论(0编辑  收藏  举报