代码访问安全性(CAS)了解

    从.NET Framework 1.0开始,微软就引入代码访问安全(CAS)模型,这是一项用于分配和管理托管代码的工具。.NET Framework 4.0 Beta 2并不赞成使用CAS,故默认情况下已经关闭该功能,而引入了第二级安全透明度的(Security Transparency Level 2)安全模型。所以本篇文主要了解CAS用法。

    代码访问安全性(CAS)能最大限底地防止用户无意识地执行不安全代码。通过使用CAS,就能够限制代码对资源的访问。用例子说明。

    例,我们新建一个Winform程序,要限制界面和文件IO为最小权限,并拒绝其它没有进行请求的权限。

    方法,打开项目中的Properties文件夹中的AssemblyInfo.cs,并在其中加入以下代码。各代码的意思已在备注中说明。

#region  设置程序集权限
using  System.Security;
using  System.Security.Permissions;

// 用户界面权限
[assembly: UIPermission(SecurityAction.RequestMinimum, Unrestricted  =   true )]
// 文件IO权限
[assembly: FileIOPermission(SecurityAction.RequestMinimum, Unrestricted  =   true )]
// 权限集,拒绝其它没有进行请求的权限
[assembly: PermissionSet(SecurityAction.RequestOptional, Unrestricted  =   false )]
#endregion

 

另外可以在代码中配置权限,如下。

 1)例,使用声明性权限

         // 声明性权限要求
        [FileIOPermission(SecurityAction.Demand, Unrestricted  =   true )]
        
private   void  btnIoPermission_Click( object  sender, EventArgs e)
        {
            
using  (StreamReader stream  =   new  StreamReader( " CarList.xml " ))
            {
                MessageBox.Show(stream.ReadToEnd());
            }
        }

 

2)例,使用命令性权限 

         private   void  btnIo3_Click( object  sender, EventArgs e)
        {
            
// 命令性要求
            FileIOPermission filePerm  =   new  FileIOPermission(PermissionState.Unrestricted);
            
// 在运行时确定当前主体是否与当前权限所指定的主体相匹配。
            filePerm.Demand();
            
using  (StreamReader stream  =   new  StreamReader( " CarList.xml " ))
            {
                MessageBox.Show(stream.ReadToEnd());
            }

        }

 

   

 

你可能感兴趣的:(cas)