AICon 上海站|日程100%上线,解锁Al未来! 了解详情
写点什么

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

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

关注

评论

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

新品速递|海泰边缘安全网关护航工控数据采集

电子信息发烧客

(WebFlux)004、WebFilter踩坑记录

编号94530

Spring Boot WebFlux Reactor3 WebFilter

数据价值平台化输出:数据服务平台

小鲸数据

数据中台 接口管理 API接口管理 数据服务 数据服务平台

部署华为云DWS过程

乌龟哥哥

9月月更

极速体验SpringCloud Gateway

程序员欣宸

Java SpringCloud SpringCloud Gateway 9月月更

阿里云搭建halo博客

乌龟哥哥

9月月更

linxu入门指令

乌龟哥哥

9月月更

大数据开发应用场景解读

Jackchang234987

大数据 数据开发

OptaPlanner场景和示例

积木编程

无线网络安全技术中的王牌标准:WPA到底是个什么东东?解决了什么问题?

wljslmz

网络安全 无线技术 9月月更 WAP

开发者有话说|我想给你讲一个故事

石云升

个人成长 9月月更

《MySQL入门很轻松》第5章:数据完整性及其分类

乌龟哥哥

9月月更

从单机百万tpmc到分布式千万tpmc,GaussDB性能提升的3个关键技术剖析

乌龟哥哥

9月月更

Python之简易计算器的制作

芯动大师

Python 9月月更 简易计算器

Databricks Data Science&Engineering模块介绍

Jackchang234987

大数据 数据产品经理 数据产品 大数据开发 Databricks

《MySQL入门很轻松》第2章:MySQL管理工具介绍

乌龟哥哥

9月月更

测试

乌龟哥哥

9月月更

leetcode 513. Find Bottom Left Tree Value 找树左下角的值 (简单)

okokabcd

LeetCode 数据结构与算法

工业4.0时代IIoT存储面临哪些挑战

CnosDB

IoT 时序数据库 开源社区 CnosDB infra

Python之鸡兔同笼

芯动大师

9月月更 Python语法 鸡兔同笼

Java中的悲观锁和乐观锁是什么意思?其分类依据是啥?

wljslmz

Java 乐观锁 悲观锁 9月月更

14个你必须要知道的ubuntu快捷键

乌龟哥哥

9月月更

第1章:初识数据库与MySQL----数据库基本概念

乌龟哥哥

9月月更

《MySQL入门很轻松》第4章:数据表中存放的数据类型

乌龟哥哥

9月月更

字符串哈希

留白的艺术

微信架构图

Johnny

#架构实战营

Spring Security 在 Servlet 的作用区域

HoneyMoose

「产品运营」研发效能之DevOps平台如何运营?

laofo

DevOps cicd 研发效能 持续交付 工程效率

第56届世乒赛团体赛开幕!三思近900㎡ LED显示点燃赛事激情

电子信息发烧客

2022-09-30:以下go语言代码输出什么?A: true true false true false; B: true false false true false; C: true true

福大大架构师每日一题

Python之斐波那契数列的实现

芯动大师

Python 9月月更 斐波那契数列

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