【问题标题】:Should I select : This is a full trust application我应该选择:这是一个完全信任的应用程序
【发布时间】:2012-06-19 13:28:02
【问题描述】:
我正在 Visual Studio 2010 中开发应用程序,我的应用程序一直连接到 Internet。我应该在“安全”选项卡中激活This is a full trust application 吗?
如果是,它究竟是什么意思?我正在阅读 msdn 文档,但我无法理解。我需要简短的说明何时使用此功能。
【问题讨论】:
标签:
c#
.net
visual-studio
visual-studio-2010
security
【解决方案1】:
别担心,它不会影响您的 Internet 连接的安全性,但会影响 .NET 框架如何处理您的应用程序。所以 - 是的,您可以毫无危险地激活它,但如果可能,您应该在代码中声明您的应用程序需要哪个级别的访问来改进安全性。解释细节:
完全信任意味着您的应用程序需要 .NET 框架提供的所有权限。作为开发人员,您声明应用程序需要哪个信任级别才能运行,这称为“代码访问安全性”。
代码访问安全性意味着您通过属性告诉编译器您的代码需要哪种操作才能成功。
.NET 框架 反过来估计应该授予应用程序多少信任:
例如,如果您将应用程序部署到远程计算机上,该计算机可通过 Intranet 外部的网络共享进行访问*),那么 .NET Framework 给予它的权限低于“完全信任”。这被称为“基于证据”的安全模型,它是通过所谓的托管代码实现的。
托管代码意味着您的 .NET 应用程序被编译成 MSIL(Microsoft 的 我通过"Roslyn"-Compiler调解L语言)然后“及时”(即在您执行它时,除非您选择@987654322 @) 通过 "RyuJIT"-Compiler 转换为特定于 CPU 的机器语言。这允许建立一个额外的抽象层,从而使 .NET Framework 能够控制您的代码执行的操作并允许它或(如果不是)抛出安全异常。
默认情况下,您使用 C# 或 VB.NET 中的一种语言为 .NET 框架编写的所有代码都是托管代码。但是,在某些(非常罕见的)情况下,您想要嵌入非托管代码——也称为“不安全代码”(在 .NET 术语中)。一种方法是在您的代码中创建一个“不安全”部分(我在这里仅提及完整性 - 即以防您可能在源代码中遇到它)。
正如我之前提到的,您可以通过属性指定代码的作用,但您也可以更改适用于本地计算机的规则,以通过 .NET 安全设置来更改此行为。
通常最好尽可能精确地指定您的应用程序需要哪些权限,并尽可能限制。
如果您有兴趣,可以在这里找到更多信息:
Exploring the .NET Framework Security Model
*) 谢谢你的提示,达米安!实际上,该框架的早期版本对网络(网络共享)上的资源信任度较低,而 .NET 4 桌面和本地 Intranet 连接具有完全信任度。
【讨论】:
-
回复:网络共享 - .NET 4 中的更改:“桌面和本地 Intranet 应用程序被授予完全信任。”
-