写点什么

Silverlight 开发中的代码安全性

  • 2007-10-23
  • 本文字数:1095 字

    阅读完需:约 4 分钟

在 Silverlight 发布时,微软宣称它将是一个完全跨平台、跨浏览器的下一代富客户端开发技术工具。但在使用绚丽功能的同时,很多人会思考 Silverlight 是否能够一如既往地实现不同平台间托管代码执行的安全性?答案是“除了安全,您没有别的选择”。

.NET Framework 提供了一个新的安全方式——代码访问安全(CAS:Code Access Security),通过 Stack Walk 检查、Permission(/set) 和 Security Policy 等一些措施我们可以保证不仅只有某些角色的人可以访问某些功能(也就是常说的 RBS:Role Based Security),就连哪些代码可以访问何种资源也可以有效管理。

Silverlight 推出后很多人更多关心的是它绚丽的 UI 效果和通过一个小小的 CoreCLR 就可以在多个平台运行的能力,但当我们尝试套用以往 CAS 的办法定义访问安全性的时候却发现无从下手,原因在于 SL 采用了所谓的“透明安全模型”(transparency model),它将代码分成两种:transparent Code 和 critical Code。前者是 SL 开发人员编写的应用代码,在用户态执行,执行主体是当前这个用户,而执行的访问控制设置为不受限;后者是 CoreCLR 在核心态执行的,它需要和具体的操作系统交互,完成例如文件访问、显卡调用等工作。在 CoreCLR 中两个代码可能保存在同一个 Assembly 中,但一个方法内部只能有唯一一类代码,而且 transparent Code 不能直接访问 critical Code。

因此,在 SL 开发中,我们能编写的代码只能是满足下述 transparent Code 要求的内容:

  • 隐式满足 LinkDemand,即整个调用栈的所有代码都必须是 transparent Code;
  • 不需执行 CAS 的断言(Assert);
  • 全部代码都是可验证的;
  • 不可以通过 Native Call 或 P/Invoke 调用本地资源,一方面为了安全,另一方面因为不同平台的本地调用方式不同;
  • 不可以直接访问 critical code。

这样您可能觉得 SL 开发限制很大,比如建立一个文件这种操作在应用中非常普遍,为了实现这个目的,CoreCLR 提供了一个中间过渡——IsolatedStorage。某种意义上讲,它是 SL 开发人员所能看到的逻辑运行平台,无论是文件、设备还是进程之类的信息都只能通过这个中间机制访问,而严格的检查也会“透明”的在这个中间机制完成。这么做有什么益处呢?很多。因为这一层把很多 Best Practice 强制实施了,例如:

  • 打开一个文件的时候,文件名称是否有效,是否存在潜在的缓冲区溢出等危险,当前用户是否可以执行这个文件打开操作等;
  • 访问一个 URL 的时候,这个 URL 是否会 Traverse up,是否可以遍历到高层目录。

总体上通过 IsolatedStorage,把很多已知的代码安全访问检查全部在 CoreCLR 平台一级内置了,开发人员可以通过这种“与生俱来”的安全性相对放心地开发自己的上层应用。

2007-10-23 19:011075
用户头像

发布了 61 篇内容, 共 13.8 次阅读, 收获喜欢 0 次。

关注

评论

发布
暂无评论
发现更多内容

使用 Coze 搭建 TiDB 助手

TiDB 社区干货传送门

实践案例

大模型“四小龙”,能否跨越深渊?

脑极体

AI

Python文件写入不稳定的处理方法

麦兜

软件测试学习笔记丨Selenium常见控件定位方法(八大定位方式)

测试人

软件测试

选择TiDB的10个理由

TiDB 社区干货传送门

数据库架构选型

“分布式透明化”在杭州银行核心系统上线之思考

TiDB 社区干货传送门

实践案例

ECMAScript 悄悄更新了两个对象分组 API,你注意到了么?

OpenTiny社区

开源 前端 低代码 组件库 OpenTiny

分布式数据库国产替代,杭州银行在挑战什么

TiDB 社区干货传送门

实践案例

墨水屏电子纸标签/电子纸价签领域如何选择无线通信方案?

Geek_ab1536

程序只占用服务器里一个核心使用,是什么问题

德迅云安全杨德俊

搜索推荐DeepFM算法详解:算法原理、代码实现、比赛实战

汀丶人工智能

自然语言处理 排序算法 搜索推荐 召回算法 DeepFM

区块链数据分析:揭示加密经济投资的真相与机会

Footprint Analytics

区块链 加密货币

计算机领域的 out of the box 特性是什么?

伤感汤姆布利柏

比特币 ETF 费用战蔓延至欧洲

TechubNews

人太多,挤不进去?教你搭建一个自己的幻兽帕鲁服务器

华为云开发者联盟

云计算 后端 华为云 华为云开发者联盟 服务器搭建

Easysearch:语义搜索、知识图和向量数据库概述

极限实验室

向量数据库 语义搜索 easysearch 知识图 知识概述

TiDB 快速入门:从零到一 部署初探

TiDB 社区干货传送门

安装 & 部署

测试 TIDB in k8s 一次问题记录(pd failed to respond)

TiDB 社区干货传送门

7.x 实践

Flink 2.0 状态管理存算分离架构演进

Apache Flink

精选案例|首创证券 NoETL 敏捷数据分析创新实践

Aloudata

数仓 ETL

知识图谱之图数据库如何选型:知识图谱存储与图数据库总结、主流图数据库对比(JanusGraph、HugeGraph、Neo4j、Dgraph、NebulaGraph、Tugrapg)

汀丶人工智能

图数据库 知识图谱

京东广告算法架构体系建设--在线模型系统分布式异构计算演变 | 京东零售广告技术团队

京东科技开发者

为什么美国CN2服务器是海外业务的首选?租用攻略详解

一只扑棱蛾子

美国服务器 CN2服务器

让错误码规范起来吧

京东科技开发者

论如何在多模态大模型下实现“找片儿”的艺术

不在线第一只蜗牛

人工智能 视频 大模型

Silverlight开发中的代码安全性_.NET_王翔_InfoQ精选文章