zoukankan      html  css  js  c++  java
  • 代码访问安全性(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());
                }

            }

       

  • 相关阅读:
    C# Winform 国际化
    Could not find method google() for arguments [] on repository container,rn 集成react-native-camera 出现此错误的解决方法
    RN集成echarts4图表组件react-native-secharts(转载)
    DataGridView设置行高
    react native原生模块引用本地jar包
    react-native-printer
    phpstudy连接SQL Server 2008数据库 以及 php使用sql server出现乱码解决方式
    Apache崩掉:为进程配置合适的线程数
    引用静态资源时加上时间戳,处理浏览器缓存问题
    利用存储过程优化复杂的数据库操作
  • 原文地址:https://www.cnblogs.com/scottckt/p/1967460.html
Copyright © 2011-2022 走看看