2天时间,聊今年最热的 Agent、上下文工程、AI 产品创新等话题。2025 年最后一场~ 了解详情
写点什么

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:011150
用户头像

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

关注

评论

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

流量变现的终极逻辑

老张

副业 码农副业 流量变现

华为各应用发布妇女节专题,一起感受女性创作者的力量

最新动态

为什么SD-WAN成为了组网发展大趋势?

Ogcloud

SD-WAN 企业网络 SD-WAN组网 SD-WAN服务商 SDWAN

手把手带你认识GaussDB轻量化运维管理工具

华为云开发者联盟

数据库 后端 华为云 华为云GaussDB 华为云开发者联盟

守护更多女性健康,华为云GeminiDB助力美柚数据库高效稳定迁移

华为云开发者联盟

数据库 后端 华为云 华为云开发者联盟 华为云GeminiDB

AI应用开发:pgvector在文本搜索中的革命(上篇)

张文平

人工智能 postgresql AI 应用开发 pgvector

SD-WAN保障零售业的持续经营

Ogcloud

SD-WAN 企业组网 SD-WAN组网 SD-WAN服务商 SDWAN

Docker Logs命令详解

霍格沃兹测试开发学社

Vue router路由设计

霍格沃兹测试开发学社

常见的虚拟化技术有哪些呢?

小齐写代码

妇女节:打开AI视界,成就“她力量”

飞桨PaddlePaddle

百度 开发者 百度飞桨 女性力量 三八妇女节

一文告诉你Vue的事件处理

霍格沃兹测试开发学社

SD-WAN能解决企业网络的哪些问题?

Ogcloud

SD-WAN 企业网络 SD-WAN组网 SD-WAN服务商 SDWAN

软件测试学习笔记丨Python语法与数据结构-函数定义与调用

测试人

软件测试

云服务器与云主机的性能对比:优势与应用场景分析

一只扑棱蛾子

云服务器

AI应用开发:你知道怎么用好pgvector吗(下篇)

张文平

数据库 postgresql AI 开发 pgvector

百度智能云音视频处理产品 MCP 推出数字水印技术,为数字内容资产保驾护航

Baidu AICLOUD

数字水印

GaussDB(DWS)运维利刃:TopSQL工具解析

不在线第一只蜗牛

Java sql 运维

智能合约开发:比特币智能合约和应用程序综合指南

区块链软件开发推广运营

区块链开发 链游开发 NFT开发 公链开发

从注册开始,教你玩转GitHub

霍格沃兹测试开发学社

超算互联网统一存储平台技术研究

Alluxio

Alluxio GPU算力 模型训练优化 超算中心 超算互联网

HTTP Authorization 头的角色与作用

Liam

程序员 前端 后端 HTTP Authorization

2024上海国际智能科技及创新展览会

AIOTE智博会

科技展 创新展

商业世界的基本法则:通过业务协作提升财务水平

智达方通

企业财务管理

如何快速上手Vue,一篇文章教会你

霍格沃兹测试开发学社

解决 npm install 报错的常见问题

霍格沃兹测试开发学社

课程预告 | 学姐领航,共学PolarDB-X:从入门到精通实操课

阿里云数据库开源

阿里云 分布式数据库 课程 polarDB PolarDB-X

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