写点什么

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

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

关注

评论

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

英特尔梁雅莉:拥抱数字时代,满足日益增长的算力需求

科技之家

openEuler 倡议建立 eBPF 软件发布标准

openEuler

开源 云原生 操作系统 内核 ebpf

2021最新百度Java岗四轮面试题,(三轮技术面+一轮HR面)

钟奕礼

Java 程序员 java面试 java编程

节能降耗 | AIRIOT智慧电力综合管理解决方案

AIRIOT

物联网 智慧电力

2021最强网易Java岗面试题,(实战篇)进大厂必备~不看后悔

钟奕礼

Java 程序员 java面试 java编程

mysql转国产数据库Gbase 8s 常见函数脚本

@下一站

数据库 12月日更 12月月更 Gbase8s 国产软件

零基础学web前端,哪些培训机构比较好

小谷哥

知乎疯转30K+的微服务架构笔记,理论与实战齐飞!

小小怪下士

Java 微服务 架构设计

APISIX Ingress 如何支持自定义插件

API7.ai 技术团队

Kubernetes 云原生 api 网关 APISIX Ingress Controller

极光笔记 | 以静制动:行为触发营销助力用户转化

极光GPTBots-极光推送

营销 运营 消息推送 用户运营

新闻速递 | KaiwuDB 亮相 DTCC 2022 线上大会并发表系列主题演讲

KaiwuDB

数据库

最新2021快手面试Java岗面经,成功手拿offer,开心到飞

钟奕礼

Java 程序员 Java 面试 java编程

socket是并发安全的吗

C++后台开发

网络编程 socket 多线程 TCP/IP Linux服务器开发

ToB业务迎来连续增长,腾讯云的华丽转身

ToB行业头条

漏洞挖掘之命令注入漏洞

网络安全学海

网络安全 信息安全 渗透测试 WEB安全 漏洞挖掘

可视化:数据可视化发展史

Data 探险实验室

数据分析 可视化 数据可视化

顶级大咖齐聚云端,赛意信息这场数字化盛宴不容错过

科技热闻

为什么新能源汽车上的IGBT会如此火爆?

元器件秋姐

半导体 新能源汽车 新能源 汽车芯片 功率半导体

互联网时代,云计算的 6 大特征

Finovy Cloud

云计算 云渲染

跬智信息(Kyligence)荣登「甲子20」中国数据智能领域最具商业潜力科技企业榜

Kyligence

大数据 数据分析 数据智能 指标中台

第五届“强网”拟态防御国际精英挑战赛在南京举行

科技热闻

当打造一款极速湖分析产品时,我们在想些什么

StarRocks

数据湖 湖仓一体

GPR政务流程再造赋能数字政府建设

张磊

人工智能 大数据 数字政务 流程再造 BPR

专科非科班怎么选择培训机构

小谷哥

学习大数据该怎么选择培训机构?

小谷哥

北京哪家web前端开发机构比较好?

小谷哥

java软件培训班毕业后找工作吗

小谷哥

chatGPT的爆火,是计算机行业这次真的“饱和”了?

千锋IT教育

阿里三面,讲讲不同场景下并发Map容器最优使用。凉凉送给自己

钟奕礼

Java 程序员 Java 面试 java编程

行业分析| 智慧头盔在快对讲上的应用与实践

anyRTC开发者

音视频 智能设备 视频通话 快对讲 智慧头盔

瓴羊Quick BI 填报组件让数据分析和可视化呈现轻而易举

对不起该用户已成仙‖

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