Microsoft .NET Framework安全解决方案
.NET Framework安全解决方案基于管理代码的概念 , 以及由通用语言运行时(CLR)加强的安全规则 。大部分管理代码需要进行验证以确保类型安全及预先定义好的其它属性的行为的安全 。例如,在验证的代码中,声明为接收4字节值的访问将拒绝提供8字节参数的调用,因为不是类型安全的 。验证过程还确保了执行流只传送到已知的位置,如方法入口点--这个过程去除了跳转到任意位置执行的能力 。
验证将阻止不是类型安全的代码执行,在它们引起破坏前捕获很多常见的编程错误 。通常的弱点--如缓存溢出 , 对任意内存或没有初始化的内存的读?。钥丶乃嬉獯?-都不再可能出现 。这将使最终用户受益,因为在他们执行代码前对其进行检查 。这也有益于开发人员,他们会发现很多常见错误(过去一直在困绕前开发)现在可以查明,并能阻止它们引起破坏 。
CLR也能使非管理代码运行,但非管理代码不能从这些安全措施中受益 。特殊的许可与对非管理代码的调用能力相关,一个强大的安全策略能确保这些许可被恰当地给予 。经过很长时间后,非管理代码到管理代码的移植将减少对非管理代码的调用频率 。
微软.NET Framework安全机制的构件
基于证据的安全
.NET Framework引入了"基于证据的安全"的概念 。在本质上 , 它是对安全策略暴露出来问题的解答:
· 组合从哪个站点获得?
组合是.NET Framework应用程序的构件 。它们组成了部署,版本控制,重用,激活作用域,安全认证的基本单元 。应用程序的组合是从网站上下载到客户端的 。
· 组合是从哪个URL获得的?
安全策略需要明确的地址,而组合是从这个地址下载的 。
· 组合是从哪个区获得的?
区是基于代码的位置,对安全标准,如 Internet, intranet和本机等等,的描述 。
· 组合的强名(strong name)是什么?
强名是由组合的创建者提供了密码强化后的标识符 。尽管它没有提供对创建者的任何证明 , 但它唯一标识了组合,确保了组合没有被破坏过 。
根据对这些问题的回答,及其它证据,安全策略可以对赋予组合垢合适许可进行计算 。从多种来源可以得到证据,包括CLR,浏览器,微软ASP.NET,及外壳--这依赖于代码的来源 。
策略驱动的信任模型使用代码证据
当组合被调入内存进,CLR策略系统通过收集组合的证据并在策略环境中对证据进行计算,从而决定赋予组合什么样的许可权 。CLR策略系统然后根据评估过的证据和组合作出的许可请求给予组合一组许可 。只有在组合被给予了一组最少的许可后,或组合根本不需要许可权,组合的创建者才能知道组合正确运行 。通过一个或多个对特定许可的请求,这样的附加需求可以被传送室策略系统 。
根据许可请求的类型,策略系统可以进一步限制给予组合的许可(删除不必要的许可)或甚至拒绝将组合装入内存(如果运行组合所需的最小许可没有被策略给予) 。在不存在任何许可请求的情况下,组合永远不会被给予多于策略系统将会给予的许可权限,请求只是进一步限制得到的许可 。
安全策略包含了许多代码组,这些组包含了根据证据应给予的许可权 。代码组描述的许可可提供给从特定的安全区域获得的组合 , 或提供给由特定发行商签名过的组合,等等 。尽管随CLR发行了一组默认的代码组(及相关许可),但管理员可以对这些CLR安全的进行定置,以适合他们的特殊需求 。记?。üㄒ逵胫ぞ菹喙氐拇胱椋魏味鞫伎梢宰魑ぞ萏峤唬灰踩呗钥梢允褂盟?。
- redis的热点数据缓存 redis热点数据切换
- 如何修改戴尔服务器的IP地址? 戴尔服务器ip地址怎么改
- mysql中ext
- 优惠券功能的业务流程设计图谱 优惠券redis处理
- redis通配符的使用
- redis是开发工具吗 redis的开发人是谁
- mongodb查询字符串字段包含 mongodb查询字段不为空
- mysql备份一个表的数据 备份一个mysql库
- mysql中删除记录的命令 mysql删除中继日志
- mysql 判断 mysql的判断语句
