我应该选择:这是一个完全信任的应用程序

时间:2012-06-19 13:28:02

标签: c# .net visual-studio visual-studio-2010 security

我正在开发Visual Studio 2010应用程序,我的应用程序不断连接到互联网。我应该在“安全”标签中激活This is a full trust application吗?

如果是,那究竟意味着什么?我正在阅读msdn docs,但我无法理解。我需要在短时间内使用此功能。

1 个答案:

答案 0 :(得分:8)

不用担心,它不会影响您的互联网连接的安全性,但它会影响.NET框架处理您的应用程序的方式。所以 - 是的,您可以在没有危险的情况下激活它,但是如果可能的话,您应该在代码中声明应用程序需要哪种访问级别来优化安全性。解释细节:

完全信任表示您的应用程序需要.NET框架提供的所有权限。作为开发人员,您可以声明应用程序需要哪个信任级别才能运行,这称为"代码访问安全性"。 代码访问安全性意味着您通过属性告诉编译器您的代码需要哪种操作才能成功。

.NET framework 反过来估计应该授予应用程序多少信任: 例如,如果将应用程序部署到远程计算机(可通过Intranet *之外的网络共享访问),则.NET Framework会使其低于"完全信任"。这被称为"基于证据的"安全模型,通过所谓的托管代码实现。

托管代码表示您的.NET应用程序已编译为 MSIL M icro s oft&#39 ; I ntermediate L anguage)由 "Roslyn"-Compiler 然后"及时" (即,当你执行它时,除非你选择create native code explicitly via NGEN before execution)通过 "RyuJIT"-Compiler 进入CPU特定的机器语言。这允许建立一个额外的抽象层,这反过来使.NET Framework能够控制你的代码所做的事情并允许它或者 - 如果不是 - 抛出安全性异常。

您使用C#或VB.NET语言为.NET框架编写的所有代码均为默认托管代码。但是,有(非常罕见)您希望嵌入非托管代码的情况 - 也称为"不安全代码" (在.NET术语中)也是如此。一种方法是创造一个不安全的"您的代码中的部分(我在此仅提及完整性 - 即如果您可能在源代码中遇到它)。

正如我之前提到的,您可以通过属性指定代码的功能,但您也可以更改适用于本地计算机的规则,以通过 .NET安全设置更改此行为。 通常,最好尽可能准确地指定应用程序所需的权限,并尽可能地限制。

如果您有兴趣,可以在此处找到更多信息: Exploring the .NET Framework Security Model

*)谢谢你的提示,Damien!实际上,该框架的早期版本为网络上的资源(网络共享)提供了较少的信任,而.NET 4桌面和本地Intranet连接则完全信任。