8

我在 Visual Studio 2010 中开发应用程序,我的应用程序一直连接到互联网。我应该This is a full trust application在安全选项卡中激活吗?

如果是,它到底是什么意思?我正在阅读 msdn 文档,但我无法理解。我需要一些简短的信息来说明何时使用此功能。

4

1 回答 1

9

别担心,它不会影响您的 Internet 连接的安全性,但会影响 .NET 框架如何处理您的应用程序。所以 - 是的,您可以毫无危险地激活它,但如果可能,您应该在代码中声明您的应用程序需要哪个级别的访问来改进安全性。解释细节:

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

.NET 框架反过来估计应该授予应用程序多少信任:例如,如果您将应用程序部署到远程计算机,可以通过 Intranet 外部的网络共享访问它*),那么 .NET 框架会给予它小于“完全信任”。这被称为“基于证据”的安全模型,它通过所谓的托管代码实现。

托管代码意味着您的 .NET 应用程序由“Roslyn”-编译器编译成MSIL (微软中间语言,然后及时”(即当您执行它时,除非您选择创建本地代码在执行之前通过 NGEN 显式地通过“RyuJIT”-Compiler转换为特定于 CPU 的机器语言。这允许建立一个额外的抽象层,从而使 .NET Framework 能够控制您的代码执行的操作并允许它或(如果不是)引发安全异常。

您使用 C# 或 VB.NET 中的一种语言为 .NET 框架编写的所有代码默认都是托管代码。但是,在某些(非常罕见的)情况下,您想要嵌入非托管代码- 也称为“不安全代码”(在 .NET 术语中)。一种方法是在您的代码中创建一个“不安全”部分(我在这里仅提及完整性 - 即以防您可能在源代码中遇到它)。

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

如果您有兴趣,可以在此处找到更多信息: 探索 .NET Framework 安全模型

*) 谢谢你的提示,达米安!实际上,该框架的早期版本对网络(网络共享)上的资源的信任度较低,而 .NET 4 桌面和本地 Intranet 连接具有完全信任。

于 2012-06-22T08:18:18.830 回答