Code Access Security - 基础
任何一个应用程序, 只要是目标平台是common language runtime, 就一定要和runtime的安全系统打交道. 当一个应用程序执行的时候, 它会自动地被runtime评估, 并给予一个权限集. 取决于应用程序得到的权限, 应用程序要么运行正常, 要么产生出一个安全异常. 一台特定计算机上的本地安全配置会终极地决定代码会获得什么样的权限. 因为这些配置在不同计算机上都不同, 所以你永远不能确定你的代码会获得足够的权限来运行. 这与非托管代码形成了强烈的对比, 在非托管代码中, 你根本就不需要担心你代码运行所需要的权限问题.
任何一个程序员都一定要熟悉下列的code access security的概念, 这样才能写出高效的针对common language runtime的代码来:
- 编写类型安全的代码: 要使得代码能从code access security中获得好处, 你必须使用能产生出可以核实类型安全的代码的编译器. 更多信息, 可以参考Writing Verifiably Type-Safe Code.
- 命令语法和声明语法: 与运行时安全系统进行的交互是通过命令式和声明式的安全调用(imperative and declarative security calls)来执行的. 声明式的调用通过使用attributes来实现; 命令式的调用通过使用你代码中的类的新实例来完成. 有些调用只能命令式地完成, 而其他的只能通过声明式的调用. 有些调用则是两种方式都用的. 更多信息, 可以参考Security Syntax.
- 为你的代码请求权限: 请求是以程序集为单位进行应用的, 在程序集中你的代码通知runtime, 告诉它你想要什么权限或者是你不想要什么权限. 安全请求在你的代码加载到内存时被runtime评估. 虽然请求(request)不能影响让进行时给你那些它本来不能给你的权限. 然而, 请求(request)就是你的代码使用的东西, 通过它来获得代码运行所需要的权限. 更多信息, 参考Requesting Permissions
- 使用安全的类库: 你的类库使用code access security来指定如果要让这些类被访问所必须得到的权限. 你应该注意在你的代码中要使用的别的任何程序集时所请求的权限. 更多信息, 请参考Using Secure Class Libraries
译自:
Code Access Security Basics
http://msdn.microsoft.com/en-us/library/33tceax8%28VS.71%29.aspx