CAS(代码访问安全性)的目的是什么?

时间:2009-01-07 15:57:37

标签: .net security code-access-security

我一直是许多网络应用程序的一部分,但从未使用CAS,也许从来没有觉得需要使用相同的。

何时需要使用CAS?人们真的在他们的应用程序中使用它吗?

8 个答案:

答案 0 :(得分:3)

CAS实际上只对桌面应用程序有用(可以这么说),在桌面应用程序中,您希望限制通过网络(例如)在本地计算机上运行的应用程序。我发现即使在这种情况下,愚弄CAS也要求一个大而无意义的头痛。默认配置通常是最明智的。

这种类型的模型显然对Web应用程序的用处不大,因为您隐式信任应用程序中的所有代码。

答案 1 :(得分:3)

我想我必须成为旷野中唯一的声音,并且不同意这里的其他响应者。
正如我几个月前在my answer中对类似问题所阐述的那样,有一些具体的情况,CAS 的方式。当然,这只适用于你非常注重安全并且处理敏感系统的问题,考虑到这只是提供额外的防御层,你可能不会到达你需要这个地方的地方。你解决了申请中所有其他严重的问题 同样,CAS使您能够以非常精细的方式限制您的应用程序可以执行的操作,而不仅仅是您的用户。

答案 2 :(得分:2)

我遇到CAS的唯一地方是在Sharepoint中,它用于限制BIN目录中的自定义程序集可以访问的内容(例如,sharepoint对象模型)。许多人认为CAS过于复杂而且不值得麻烦,因此他们最终将大会投入GAC。但如果你这样做,那么你最好仔细检查代码是否存在任何安全风险。

答案 3 :(得分:1)

我从未见过它。

它完全存在,你可以说你的代码应该运行的最高级别的安全性。它更像是一种诉讼保护机制,而不是你可以宣称你的代码不可能被授权执行的任何其他东西某种功能。

就个人而言,我认为这是浪费时间,因为它没有为底层操作系统提供真正的保护。

以下是来自microsoft的更多信息:http://msdn.microsoft.com/en-us/library/930b76w0(VS.71).aspx

答案 4 :(得分:1)

我在学习WPF时遇到过一次。它在this Sudoku教程中用于加载其他用户的插件。为插件创建了一个特殊的应用程序域,具有很少的访问权限,并且使用.NET远程处理进行了通信。本教程提供了对安全插件加载的一些很好的见解。

答案 5 :(得分:1)

VSTO是一项非常有用的技术,可让您从Office文档运行使用.NET语言编写的托管代码,而不是使用VBA。它需要在客户端机器上以两种方式使用caspol:

  • 权限Office从部署DLL的位置运行DLL。

  • 权限Office从打开Office文档的位置运行DLL。

我发现caspol是一场噩梦,我认为,就像Makefiles一样,只有一个caspol脚本从头开始编写。

答案 6 :(得分:0)

我必须同意这里的其他选择 - CAS是纸上看起来不错的东西之一,但我永远不会看到它在严肃的LOB应用程序中使用,我可能永远不会。令我惊讶的是,人们经常在面试中询问与CAS相关的问题 - 现在 完全没有意义。 :)

答案 7 :(得分:0)

CAS的一个例子是WPF托管在浏览器应用程序(.xbap)。

问题在于如何保护客户端免受在浏览器托管的appdomain中运行的托管代码的影响。

为此,WPF(更准确地说,PresentationHost.exe)创建一个具有受限权限的appdomain。在其边界内运行的代码以一组有限的权限运行(例如,没有文件IO,没有注册表访问权限,只有安全打印等)。

考虑CAS有用性时要考虑的另一个观点是,在编写将安装在客户端计算机上的库的人身上。如何保护客户端计算机及其网络免受浏览器中运行的部分受信任代码的影响,例如作为调用这些库的WPF应用程序的一部分? CAS有助于完成这个难题,提出适当的要求,因此部分受信任的代码只能访问安全公开的功能。