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

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

关注

评论

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

MGR新节点RECOVERING状态的分析与解决:caching_sha2_password验证插件的影响

GreatSQL

greatsql mgr

分布式锁的3种实现!附代码

王磊

Java

星耀数字中国,先要存下宇宙山河

脑极体

存储

HarmonyOS Codelab 优秀样例——溪村小镇(ArkTS)

HarmonyOS开发者

HarmonyOS

使用代理IP可以解决哪些网络问题?代理ip是怎么优化网络游戏玩家的游戏体验的?

巨量HTTP

代理IP

面向OpenHarmony终端的密码安全关键技术

OpenHarmony开发者

OpenHarmony

舞台租赁LED显示屏技术

Dylan

技术 LED显示屏 led显示屏厂家

融云聊天室再放大招,服务更完整、集成更便捷

融云 RongCloud

产品 通信 服务 融云 属性

“源聚一堂”开源技术沙龙济南站顺利举办

inBuilder低代码平台

开源 低代码

奇点云对话顺丰科技、周大生:数据中台不是一次性项目

极客天地

GLTF在线编辑器

3D建模设计

gltf/glb模型 GLTF gltf编辑器

深入学习 FastAPI 鉴权:实现可扩展的身份认证机制

Apifox

程序员 后端 鉴权 FastApi ptyhon

软件测试丨探索基于大模型的人工智能应用与开发,开启智能化时代

测试人

人工智能 程序员 软件测试 公开课 ChatGPT

即时通讯技术文集(第20期):IM架构设计技术文章(Part3) [共14篇]

JackJiang

网络编程 即时通讯 IM

2024第二十三届浙江国际智能楼宇技术与智慧安防产品展览会

AIOTE智博会

智慧楼宇展 安防展 智慧安防展

使用 NGINX Unit 实施应用隔离

NGINX开源社区

Unit 应用隔离

初露头角!Walrus入选服贸会“数智影响力”数字化转型创新案例

SEAL安全

企业数字化转型 数智化 企业号9月PK榜 中国国际服务贸易协会

Mac电脑最新2023 Xmind 激活中文版

胖墩儿不胖y

思维导图 Mac软件 mac思维导图 思维导图软件

阿里云PAI-灵骏大模型训练工具Pai-Megatron-Patch正式开源!

阿里云大数据AI技术

机器学习 阿里云

性能、安全和稳定,DataAPI 为企业 API 保驾护航

袋鼠云数栈

大数据 数据中台 API

软件测试/测试开发丨ChatGPT在测试计划中的应用策略

测试人

人工智能 软件测试 测试开发 ChatGPT

2024第八届浙江智慧城市与智能建筑产品博览会

AIOTE智博会

智慧城市展 智能建筑展

企业综合信息化,人力资源管理,培训考学管理,电子采购(源码系统)

金陵老街

java;

如何实现MongoDB副本集实例间的数据迁移

NineData

数据库 mongodb 复制 迁移 NineData

泄露个人信息的2300余名“内鬼”被抓?

极盾科技

数据安全

从AIxCC大赛看下一代AI漏洞挖掘

云起无垠

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