这个部分提供了能够被设计成与安全系统一起运作的不同编码方式的概览。

安全中立代码

安全中立代码并不明确地与安全系统做任何事情。它只与它所接收到的许可一起运行。虽然对于与被保护的操作(如使用文件、网络,等等)相关联的安全异常进行捕获的应用程序能够导致一个未经处理的异常,但是安全中立代码仍然能够获得 .NET Framework 安全技术的优势。

安全中立的库拥有一些需要你来理解的特殊特性。假设你的库提供了使用文件或者调用了非管理代码的 API 元素;如果你的代码没有相应的许可,那么它将无法与被描述的那样被运行。但是,即使代码拥有许可,任何对它进行调用的应用程序代码也都必须拥有相同的许可来完成任务。如果对于代码调用并没有得到正确的许可,那么对于安全堆栈的代码访问将会导致一个 SecurityException 异常。

不是可重用组件的应用程序代码

如果你的代码是某个不会通过其他代码而被调用的应用程序中的一部分,那么安全就是简单的并且是特殊的编码,同时也不是必需的。但是,要记住恶意代码是能够对你的代码进行调用的。虽然代码访问安全可以阻止恶意代码对于资源的访问,但是这种代码仍然能够读取到可能包含有敏感信息的字段值或者属性值。

另外,如果你的代码从互联网或者其他不可靠的来源中接受到了用户的输入,那么你就必须谨慎地对恶意输入进行处理。

本地代码实现的被管理包装器

典型地在这个情节中,一些有用的功能是在需要对于被管理代码可用的本地代码中而被实现的。使用平台调用或者 COM 的互用性就能够容易地编写出被管理的包装器。但是,如果你这样做,那么你的包装器的调用者就必须拥有非管理的代码权限来成功地完成任务。在默认的策略之下,这表示从局域网或者从互联网被下载的代码将无法与这些包装器一起运作。

最好是只给予包装器代码以非管理的代码权限,而不是所有的应用程序。如果底层的功能没有暴露资源并且声称实现是“安全的”,那么包装器就只需要声明它的权限,从而允许任何代码对它进行调用。因此在资源被包含的时候,安全编码就应该与在稍后部分被描述的库代码一样。因为包装器潜在地把调用者暴露给了它们的资源,所以谨慎地对本地代码的安全性进行核实是必需的并且也是包装器的职责。

暴露了被保护资源的库代码

对于安全编码来说,这是最强大的并且也是潜在的危险(如果错误地被完成)方式:你的库将与一个接口一样服务于其他代码来访问特定的并且不再是另外可用的资源,这与在 .NET Framework 中为它们所使用的资源而强制许可的类是一样的。

转载于:https://www.cnblogs.com/Laeb/archive/2007/02/06/641806.html

.NET 指南:安全编码概览相关推荐

  1. 万字总结 Python 构建指南与设计模式概览

    本文的目的是快速了解 Python 数据结构和语法糖,包括如何使用 Python 表达那些我们熟悉的设计思想和设计模式,然后,基于成熟的环境管理工具和优秀的第三方库快速开发 Python 工程.大致可 ...

  2. 计算机图形学MFC绘图作业__在VS2017上的使用指南与编码示例

    1)首先打开"Visual Studio Installer",如图: 2)单击"修改": 3)按如图顺序点击: 4)静静等待加载,最后按启动,并按" ...

  3. 如何确定autosar的版本_AUTOSAR编码指南(中文版)

    在汽车应用领域,软件开发变得越来越重要.随着安全.环境以及便利性需求的增长,车辆中应用电子系统的数量也在急速增长.其中有90%的创新应用都是基于软件驱动的电子组件.而这些组件的研发成本占车辆开发成本的 ...

  4. 《电商直播高画质开播指南》正式发布,6步快速搭建一个高清直播间

    <电商直播高画质开播指南>,由阿里巴巴大淘宝技术.淘宝直播联合佳能"佳直播"高清直播解决方案(以下简称"佳直播")发布,旨在以标准化.场景化和低成本 ...

  5. Software Engineering at Google翻译-III-8-Style Guides and Rules(风格指南和规则 )

    第8章 风格指南和规则 作者: Shaindel Schwartz 编辑: Tom Manshreck 参考:https://github.com/daizhenhong/swe-at-google/ ...

  6. 2021年最详细的Android屏幕适配方案汇总

    1 Android屏幕适配的度量单位和相关概念 建议在阅读本文章之前,可以先阅读快乐李同学写的文章<Android屏幕适配的度量单位和相关概念>,这篇文章包含了阅读本文的一些基础知识,推荐 ...

  7. android开发过程中遇到的问题

    记录android开发过程中遇到的问题. 1.在一个xml中能否使用同一个include多次 http://www.apkbus.com/android-104152-1-1.html android ...

  8. 记录的Android开发过程中遇到的问题。

    180508  更新 网上下载demo 本地studio版本和demo版本不一致处理方式 修改两处 1 项目的build.gradle 里面classpath 2修改项目目录下 gradle--> ...

  9. android开发过程中一些遇到的问题

    记录android开发过程中遇到的问题. 1.在一个xml中能否使用同一个include多次 http://www.apkbus.com/android-104152-1-1.html android ...

最新文章

  1. Java开发的环境搭建
  2. R语言ggplot2可视化左对齐两个可视化图像的画图区域(边缘)实战
  3. 对话框Flags的设置值
  4. pytorch基础知识整理(五) 优化器
  5. barrier linux,LinuxBarrierI/O的介绍有哪些呢? 爱问知识人
  6. iOS之深入解析如何检测“循环引用”
  7. Linux下的进程池(2)
  8. createsolidcaret 后 很快就不闪烁了_【文献推送】Adv. Mater. | 单分散硅基闪烁体实现X射线介导的深层肿瘤光动力治疗...
  9. Split的使用(C#)
  10. 24.卷1(套接字联网API)---带外数据
  11. [病毒木马] Windows 映像劫持
  12. 大学excel题库含答案_大学生计算机基础excel试题及答案
  13. SqlServer数据库 设置查询结果字体
  14. 解决uniapp从首页列表进入详情页,再返回首页时滚动条在顶部的问题
  15. Unity 计算模型的中心点的方法
  16. C语言实现通讯录(动态版)
  17. 国民感冒众生相,“微大夫”电磁脉冲预防+舒缓
  18. 无线射频专题《协议类,IEEE 802.11/802.11b/802.11a/802.11g/802.11n/802.11ac标准简介》
  19. MVVM理解 ——(2)数据劫持
  20. 一个C#写的爬虫程序

热门文章

  1. C#的多线程机制探索7
  2. 常用JavaScript函数 59 - 70(自我总结)
  3. 贪心——FatMouse' Trade(hdu1003)
  4. docker之使用supervisor管理多个进程
  5. Linux中ACL权限设置
  6. sql中count(0),count(1),count(),count(列名)
  7. Git—基础知识及常用命令(系列一)
  8. linux 下按内容查找文件
  9. Ubuntu 下解压缩命令全览
  10. 装箱与拆箱 c# 1613534570