【问题标题】:Using the .NET Framework security system使用 .NET Framework 安全系统
【发布时间】:2008-10-04 08:01:35
【问题描述】:

我想知道 - 你们中的任何人实际上使用 System.Security.Permissions 命名空间中的各种类吗?我主要开发桌面/服务器端组件(即,没有 Web),一般假设是 FullTrust 始终可用,并且在不是这种情况的环境中不进行测试。除了 MS 源代码(EnterpriseLibrary 等),我还没有看到使用上述结构的实际、正在使用的源代码。

这是普遍现象,还是我们例外?我当然知道,不做这种测试对我们来说是个问题......

【问题讨论】:

    标签: .net security code-access-security


    【解决方案1】:

    当用户通过 Internet 直接从服务器上运行代码时,.NET 代码访问安全性更为重要,在这种情况下,他们不一定相信它会自动执行诸如访问文件系统之类的操作。不过,我不知道有谁会这样提供他们的代码。

    【讨论】:

    • 正是我正在寻找的答案类型 - 似乎我们不是唯一的......
    • +1。 .NET CAS 系统复杂、笨重且生成的问题难以调试。微软需要为互联网沙盒环境推广它。但对于应用程序开发人员而言,它几乎没有增加任何价值 - 特别是因为大多数威胁来自非托管代码。
    • 这不再是真的,而且已经很久没有了。它很大,而且可能在概念上很复杂——但如果你知道你想做什么,那么完成它并不太难。
    【解决方案2】:

    我大量使用 PrincipalPermissionAttribute 来要求用户从 Thread 的 Principal 中获得必要的访问权限(使用角色) - 在我的业务代码中节省了大量手动检查(显然 UI 也应该检查并禁用按钮等 - 这只是后端的双重检查)。

    我发现基于 Principal 的安全性非常通用,尤其是使用自定义 Principal。但我不使用 CAS 的东西。

    【讨论】:

      【解决方案3】:

      如果您使用 ClickOnce 部署桌面应用程序,那么安全沙盒就可以发挥作用。

      【讨论】:

        【解决方案4】:

        我从未见过有人使用许可、断言功能。

        我怀疑许多开发人员实际上并没有意识到该功能。

        我认为限制对危险函数的调用可能很有用。

        这将取决于您正在做什么,但谁想让部署变得比现在更复杂?

        【讨论】:

        • 虽然有用,但我发现实现非常复杂。也许这就是为什么它不是很受欢迎或众所周知的原因。我花了相当多的时间研究文档,并在工作中为开发组写了一些 HOWTO 风格的文章 - 共识是在实践中很难使用和部署。
        猜你喜欢
        • 2018-09-03
        • 2020-04-30
        • 1970-01-01
        • 2016-05-10
        • 1970-01-01
        • 1970-01-01
        • 2016-03-30
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多