ASP.NET - 信任级别=完整?

时间:2009-01-20 15:00:59

标签: asp.net security sharepoint web-config cas

我最近加入了一家公司,在分析他们的环境时,我注意到SharePoint web.config的信任级别设置为Full。我知道这是一个绝对可怕的做法,希望stackoverflow社区可以帮助我概述这个决定的缺陷。

哦,看来这个决定是为了让开发人员在不创建CAS策略的情况下将dll部署到Bin文件夹。叹息。

只是想澄清并使事情变得更糟,我们还在为此Web应用程序部署第三方代码。

5 个答案:

答案 0 :(得分:4)

托德,

Dino Espisito的书“Programming Microsoft ASP.Net 3.5”提供了一些不允许完全信任ASP.Net应用程序的合理推理。

除此之外,Dino还表示,暴露在互联网上的网络应用程序是“您可以想象的最恶劣的计算机安全环境之一”。和

  公开曝光完全信任   应用程序是一个潜在的平台   让黑客发动攻击。该   更少的应用程序是值得信赖的   应用程序更安全   是。

我很惊讶StackOverflow社区没有更好地概述Full Trust的问题。我希望同样的事情,所以我没有必要挖掘我的书堆来找到答案,懒得我。

答案 1 :(得分:2)

如果他们忽略了CAS的政策,那么让他们回拨可能是一个艰难的卖点,因为这会使他们的工作变得更难(或者,至少可以少一些原谅)。改变安全实践总是很困难 - 就像我不得不说服我的老板在我们的Web应用程序的SQL连接字符串中使用SA帐户是一个坏主意 - 但挂在那里。

完全信任允许应用程序升级以控制计算机上的任何资源。虽然你必须在你的应用程序中有一个安全漏洞来允许这些,并且他们可能会声称他们通过精明的编程阻止了任何升级,提醒他们,如果发生了某些事情,他们不会宁愿网络应用程序没有控制整个计算机?我的意思是,为了以防万一?

编辑:我的语言在这里有点过分热心。完全信任将允许应用程序控制它想要的任何内容,但前提是应用程序池进程有足够的权限来执行它。因此,如果您作为有限用户运行,除了应用程序需要的服务器之外没有任何权限,那么我认为“完全信任”基本上没有风险。实际情况是,应用程序池所有者很可能拥有您不希望应用程序拥有的许多权限(在某些情况下,还有许多甚至更多),因此限制应用程序安全性并单独授予其他权限需求会更安全到申请。谢谢你的纠正,巴里。

答案 2 :(得分:1)

缺陷?许多。但最可怕的是CAS实用程序:

“...它允许完全访问您的计算机资源,例如文件系统或网络访问,可能在安全系统的控制之外运行。”

这意味着,授予Full Trust的代码可以执行系统上的任何其他代码(托管或其他),可以通过网络调用任何机器,可以在文件系统中执行任何操作(包括更改受限文件的权限 - 甚至OS文件)。

大多数网络程序员会说“这不是问题,只是我的代码”,这很好......直到他们的代码中出现安全漏洞,允许攻击者使用它来做令人讨厌的事情。之前授予的完全信任变得非常不幸。

答案 3 :(得分:1)

老实说,我发现sharepoint过于严格。

请查看以下页面,了解基于信任级别可以做什么和不可以做什么 http://msdn.microsoft.com/en-us/library/ms916855.aspx

我遇到的一个问题是我无法使用缓存应用程序块。我们使用此应用程序块而不是ASP.NET缓存,因为我们使用了MVP模式并可能打开win表单应用程序。

另一个问题是没有反映,这导致“关于”页面失败,因为版本号是从程序集的元数据中提取的。

我认为最好的解决方案是不要将Sharepoint用作应用程序主机。如果编码量太小而不影响信任级别,那么我只会将Sharepoint用作应用程序主机,并且设置新应用程序的工作量会减少。如果您正在进行某种类型的编码,这些编码开始触及信任级别的墙壁,请将您的应用程序移动到适当的ASP.NET环境中。但那只是我,我有偏见。也许你应该尝试瞄准中等信任级别的妥协。

答案 4 :(得分:1)

我在开发机器上使用完全信任..因此我可以在构建新代码时部署到BIN。 我相信我自己的代码并在GAC中进行生产,因为创建CAS策略很痛苦。

第三方的事情会让我担心..然而:

网络上发现的大多数第三方解决方案也部署到GAC(假设出于同样的原因)。无论信任程度如何,这都赋予他们所有权利。 如果您信任第三方,那么感觉就更多了...你真的相信自己的开发者吗?

黑客会做什么? 黑客在你的BIN文件夹中删除邪恶dll的情况我认为不太现实..不管他是否能做到这一点他也可能改变信任等级。