托管服务提供商如何允许 .NET 完全信任?

托管服务提供商如何允许 .NET 完全信任?

我想知道某些 .NET 托管服务提供商如何能够安全地向其客户授予完全信任?

这是否意味着所有在该公司托管的人都面临潜在的安全问题?或者有没有办法安全地限制每个客户(尽管他们给予了充分的信任)使用“他们的”空间,而不让他们有能力破坏系统或监视其他客户?

答案1

从某种程度上来说,它确实有可能导致一个应用程序的问题影响其他应用程序。

但是,完全信任实际上默认情况下已经相当安全了,尤其是对于外部攻击。完全信任情况下的最大风险来自合法用户,他们可能会上传和运行一些愚蠢的代码。不过,这在总体实践中是一个很小的风险,这就是为什么你会看到完全信任的托管。

托管服务提供商还采取了一些措施来进一步减少某个错误用户的愚蠢行为所造成的影响。大多数提供商确实对“完全信任”默认设置进行了一些调整,以消除 asp..net 解决方案实际上不需要的功能。他们还倾向于在服务器上的单独应用程序池中运行每个用户的帐户。

此外,默认的中等信任设置也存在一些问题,导致许多 asp.net 应用程序很难实现完全信任。为了解决这些问题,微软对 asp.net 4.0 中的代码访问安全性和信任级别的工作方式进行了一些更改。我还没有亲自深入研究最终的细节,但您可以在以下链接中找到一些相关信息:

.NET Framework 4 中的安全更改

ASP.NET 4 应用程序中的代码访问安全性

答案2

.net 框架的“信任”问题与保护服务器无关。至少不是直接相关的。

托管服务提供商(应该)通过向托管用户授予有限的用户权限来保护其服务器。这些权限是在操作系统级别授予的。用户使用的 VM 或语言无关紧要。从大多数语言中,您可以访问 win32 api 或 posix api,并在您的安全权限允许的范围内造成尽可能多的损害。

.net 框架的“信任”模型涵盖的场景与浏览器中托管的 JavaScript 解析器提供的场景没有太大区别。考虑以下情况:您正在编写一些游戏服务器。并且您不会允许第三方为您的游戏编写扩展。您将在您的服务器上运行这些第三方提供的 dll。您想允许他们调用您的 api。但您肯定不想让他们直接嗅探您的磁盘或数据库。在这种情况下,操作系统安全性不会帮助您,因为这些 dll 使用您的凭据在您的进程中运行。因此,您在受限制的信任中加载这些 dll。并且 .net 框架将确保他们不会调用任何危险的 api。

相关内容