我参与过这么多 Web 应用程序,但从未使用过 CAS,也许也从未觉得有必要使用它。
什么时候需要使用 CAS?人们真的在他们的应用程序中使用它吗?
我参与过这么多 Web 应用程序,但从未使用过 CAS,也许也从未觉得有必要使用它。
什么时候需要使用 CAS?人们真的在他们的应用程序中使用它吗?
我想我必须是荒野中唯一的声音,并且不同意这里的其他响应者。
正如我在几个月前对类似问题的回答中所阐述的那样,在某些特定情况下,CAS是可行的方法。当然,这仅适用于您非常注重安全并处理敏感系统的情况,并且考虑到这只是提供了额外的防御层,您可能无法到达需要它的地方您修复了应用程序中的所有其他严重问题。
同样,CAS 使您能够以非常精细的方式限制您的应用程序可以做什么,而不仅仅是您的用户。
CAS 实际上只在桌面应用程序中有用(可以这么说),您希望限制通过网络运行的应用程序(例如)能够在本地计算机上执行的操作。我发现,即使在这种情况下,愚弄 CAS 也会让人头疼。默认配置通常是最明智的。
这种类型的模型对于 Web 应用程序显然没有多大用处,因为您隐含地信任应用程序中的所有代码。
The only place I have ever encountered CAS is in Sharepoint where it is used to limit what a custom assembly in the BIN directory can have access to (e.g., the sharepoint object model). Many people think CAS is too complex and not worth the trouble, so they end up throwing the assembly in the GAC. But if you do that, then you better scrutinize the code for any security risks.
VSTO是一项有用的技术,可让您从 Office 文档运行以 .NET 语言编写的托管代码,而不是使用 VBA。它需要在客户端机器上以两种方式使用 caspol:
权限办公室从部署 DLL 的位置运行 DLL。
允许 Office 从打开 Office 文档的位置运行 DLL。
我发现 caspol 是一场噩梦,我认为,就像 Makefiles 一样,只有 1 个 caspol 脚本是从头开始编写的。
我从未见过它使用过。
它的存在只是为了让你可以说你的代码应该运行的最高安全级别。它更像是一种诉讼保护机制,而不是其他任何东西,因为你可以声称你的代码不可能被授权执行某个功能.
就个人而言,我认为这是浪费时间,因为它没有为底层操作系统提供真正的保护。
这里有一些来自微软的更多信息:http: //msdn.microsoft.com/en-us/library/930b76w0 (VS.71).aspx
我在学习 WPF 时遇到过一次。在本数独教程中使用它来加载其他用户的插件。为插件创建了一个特殊的应用程序域,几乎没有访问权限,并使用 .NET 远程处理进行通信。本教程提供了一些关于安全插件加载的很好的见解。
我必须同意这里的其他观点——CAS 是其中一种在纸面上看起来不错的东西,但我从未见过它在严肃的 LOB 应用程序中使用过,而且我可能永远也不会。令我惊讶的是,人们经常在面试中问与 CAS 相关的问题——现在这完全没有意义。:)
CAS 的一个示例是在 WPF 托管的浏览器应用程序 (.xbap) 中。
问题在于如何保护客户端免受在浏览器托管的 appdomain 中运行的托管代码的影响。
为此,WPF(更准确地说,PresentationHost.exe)创建了一个具有受限权限的 appdomain。在其边界内运行的代码以一组有限的权限运行(例如,没有文件 IO、没有注册表访问、只有安全打印等)。
考虑 CAS 有用性时要考虑的另一个观点是,有人编写将安装在客户端机器上的库。您如何保护客户端机器及其网络免受浏览器中运行的部分受信任代码的影响,例如作为调用这些库的 WPF 应用程序的一部分?CAS 帮助完成了这里的难题,提出了适当的要求,因此部分受信任的代码只能访问安全公开的功能。