写点什么

.NET 3.5 SP1 允许从网络共享环境中运行托管应用程序

  • 2008-08-29
  • 本文字数:1278 字

    阅读完需:约 4 分钟

微软已经发布了.NET Framework 3.5 SP1 ,相对于以前的版本,新版包含了一个安全方面的改进,它允许开发人员从网络共享文件中运行托管应用。

根据微软的官方说明,.NET Framework 3.5 SP1 中有个特性是这样的:

从网络共享文件里打开的托管应用运行时和本地应用拥有一样的行为,即完全信任。

在过去,由于安全的原因,你无法从网络共享环境中运行托管代码。当初之所以在.NET 中引入这个特性,是为了阻止从网络上进行的安全攻击。然而它并没有解决相关的安全威胁,因为非托管代码在这类环境中一直是能够被执行的。

微软程序经理 Brad Adams 最近所做的一个调查显示,很多人都想从网络共享环境中运行托管代码。微软回应了该需求,并在.NET 3.5 SP1 中增加这一特性。

对于这个安全方面的改变,.NET 运行时团队(Runtime Team)的架构师 Vancel Morrison评论说

我们犯了一个错误。在 2001 年,我们以为自己是在“默认即安全”方面的急先锋,也因此固执地认为,最终我们一定能弥补从网络共享文件运行非托管代码的“漏洞”。我们也忽视了这一决定所带来的痛苦。

但是随着时间的推移,我们发现自己太天真了。改变非托管代码行为的收益率太低了,另外,对于安全性来说,更加清楚的一点是,它必须足够简单,也就是说对所有事情一视同仁。因此,如果你不想从网络运行托管代码程序,那么也不应该将非托管代码程序区别对待。

Vance 也认为,由这一改变所引入的安全威胁并不是那么严重:

对于那些认为我们因此而开启安全漏洞之门的人,我想说我们已经非常小心,尽量避免出现这种情况。基本的逻辑是,我们不会产生任何新的漏洞,因为 Windows 允许非托管的可执行文件通过网络共享运行。

Shawn Farkas 是来自 CLR 团队负责密码(Cryptography)类的一名软件工程师,他解释了这一新特性是如何工作的

这一更改的核心思想在于改变了我们处理网络装载应用程序的方式。当我们发现一个直接从网络共享上载入的.exe 文件时,不会认为该文件来自于“本地网络(LocalIntranet)”,而是认为它来自于“我的电脑(MyComputer)”。这使该.exe 文件会和默认的“我的电脑”代码群组相匹配,而不是和“本地网络”群组,而默认的 CAS 策略也会授权“我的电脑”代码群组为“完全信任(FullTrust)”。

对于那些想禁止通过网络运行托管代码的人,Shawn 提出了如下建议:

你可以在注册表里的 HKLM\Software\Microsoft\.NETFramework 键处,将 DWORD 格式的 LegacyMyComputerZone 值设为 1。

根据 Shawn 的说法,在以下的场景里,程序集会拥有运行的权限:

  1. 任何直接从网络共享文件装载的托管.exe 文件;
  2. 任何从与.exe 文件同一目录装载的.exe 流程中的程序集。

在下面的场景里,程序集没有运行的权限:

  1. 从载入.exe 文件的共享文件子目录装载的程序集;
  2. 从不含有主.exe 文件的共享文件中装载的程序集;
  3. 任何装载在 LegacyMyComputer 注册值设为 1 的机器上的程序集;
  4. 任何装载到 CLR 宿主文件的程序集,包括以控件的形式装载到 IE 中的程序集;
  5. 当某个应用是从“真正的”我的电脑位置载入时,任何被该应用从共享文件装载的程序集。

查看英文原文:.NET 3.5 SP1 Runs Managed Applications From Network Shares

2008-08-29 04:151078
用户头像

发布了 827 篇内容, 共 329.2 次阅读, 收获喜欢 28 次。

关注

评论

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

先到先学!阿里新产Spring全家桶核心笔记,底层源码+应用全覆盖

程序员小毕

spring 源码 后端 架构师 java面试

跨平台应用开发进阶(二十九) :uni-app 实现Android原生APP-云打包集成神策详细教程

No Silver Bullet

uni-app android 跨平台应用 云打包 12月月更

区块链+物联网,如何解决农产品溯源之痛?

旺链科技

区块链 物联网 产业区块链 农产品 12 月 PK 榜

手写JavaScript常见5种设计模式

helloworld1024fd

JavaScript

前端二面必会手写面试题汇总

helloworld1024fd

JavaScript

ZBC成功上线PancakeSwap的糖浆池,并有望在不久上线Binance

西柚子

重磅干货!一文读懂「企业级架构」

极狐GitLab

DevOps geo 高可用架构 ha 企业级代码架构

Vue的computed和watch的区别是什么?

bb_xiaxia1998

Vue

海量监控数据处理如何做,看华为云SRE案例分享

华为云开发者联盟

数据库 后端 华为云 12 月 PK 榜

天翼云Serverless边缘容器,为云上创新开启加速度

天翼云开发者社区

云计算 边缘计算 边缘容器

HummerRisk V0.7.0:支持京东云、webhook、PDF下载等

HummerCloud

云安全 云原生安全

分布式注册服务中心etcd在云原生引擎中的实践

京东科技开发者

分布式 云原生 etcd 集群 go语言

问:你是如何进行react状态管理方案选择的?

beifeng1996

React

前端一面必会react面试题(附答案)

beifeng1996

React

数据分析架构新变革?Doris Summit 2022 议程首公布!|即刻报名

SelectDB

Doris summit 峰会报名 大数据 开源 数据库·

社招前端一面必会react面试题集锦

beifeng1996

React

选择从零开发一款小游戏如何能实现变现

Onegun

小游戏 小游戏开发 H5小游戏

数据可视化图表系列解析——折线图

Data 探险实验室

数据分析 可视化 数据可视化 可视化数据 折线图与饼图

ZBC成功上线PancakeSwap的糖浆池,并有望在不久上线Binance

小哈区块

玩转云端 | 数据管理深似海,运维如何变“路人”?

天翼云开发者社区

大数据 数据仓库 数据存储

架构实战 - 模块4作业

mm

redis sentinel #架构实战营

手把手教你一套完善且高效的k8s离线部署方案

京东科技开发者

Docker k8s ansible ulimit 云计算,

论文解读丨【CVPR 2022】不使用人工标注提升文字识别器性能

华为云开发者联盟

人工智能 华为云 文字识别 12 月 PK 榜

百度APP Android包体积优化实践(四)Dex注解优化

百度Geek说

Java android 前端 12 月 PK 榜

社招前端一面经典手写面试题(边面边更)

helloworld1024fd

JavaScript

手写现代前端框架diff算法-前端面试进阶

helloworld1024fd

JavaScript

【论文推荐】TDSC2022 安全补丁识别最新的方案E-SPI

华为云开发者联盟

后端 开发 华为云 12 月 PK 榜

Java7提供的Fork/Join框架实现高并发程序,你会使用吗

华为云开发者联盟

高并发 开发 华为云 12 月 PK 榜

跨平台应用开发进阶(二十八) :资源加载速度优化解决方案

No Silver Bullet

跨平台 12月月更 资源加载优化

问:React的useState和setState到底是同步还是异步呢?

beifeng1996

React

一文梳理HTTP、TCP、Socket和WebSocket的区别和联系

No Silver Bullet

TCP 网络协议 HTTP websocket 12月月更

.NET 3.5 SP1允许从网络共享环境中运行托管应用程序_.NET_Abel Avram_InfoQ精选文章