【问题标题】:Understanding CAS in the .NET framework了解 .NET 框架中的 CAS
【发布时间】:2010-10-25 12:42:42
【问题描述】:

如果我向 .net 框架提供我的程序集所属代码组的证据,我不能提供虚假证据表明我属于受信任区域代码组吗?

我知道什么是安全策略、权限集,但我不明白框架如何检查证据,然后根据该证据确定代码组。

任何解释将不胜感激。

谢谢:)

【问题讨论】:

    标签: .net security cas


    【解决方案1】:

    证据可以是程序集强名称、代码库和其他东西。它当然可以验证这些东西。您根据证据手动信任程序集。基本上,您告诉框架程序集是否具有以下属性,授予它该权限集。我看不出有什么办法可以提供虚假证据。可以举个例子吗?

    PS。是的,例如,您可以窃取某人的密钥对并用它签署您的程序集。与任何其他安全系统一样,它依赖于信任链。如果你打破了链条的一部分,你就搞砸了。没有真正的方法可以在安全系统中规避这些东西。毕竟,您可能会因缓冲区溢出或其他原因危及系统,并将您的程序集添加到完全信任列表中。

    【讨论】:

    • 如果程序集基于它们提供的证据是可信的,那么不能提供虚假证据吗?即,我可以在我的程序集中提供证据证明我确实不属于 LocalIntranet。这样我的程序集在运行时可以获得更多权限。
    • 你怎么能那样做?您要么必须在 LocalIntranet 中注册您的程序集,要么从受信任为 LocalIntranet 的位置运行它。证据并没有真正从议会中查询。这是他们的身份。
    【解决方案2】:

    允许调用者提供证据的各种 BCL 方法本身受到权限要求的保护。调用者通常至少需要 SecurityPermission\ControlEvidence,但通常需要无限制的权限授予(也称为“完全信任”)。 (由于 SecurityPermission\ControlEvidence 仅在默认 CAS 策略下授予本地安装的代码,因此在大多数情况下几乎没有实际区别。)最终结果是,只有高度可信的代码才能通过控制其证据来影响任何给定程序集的权限授予。

    如果您认为您发现了此一般规则的例外情况,请提供详细信息吗?

    【讨论】:

      猜你喜欢
      • 2015-07-02
      • 1970-01-01
      • 1970-01-01
      • 2016-03-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多