代码访问安全性(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());
            }

        }

   

原文地址:https://www.cnblogs.com/scottckt/p/1967460.html