![]() |
1
2
您认为程序集将只作为完全可信的可执行文件运行的基本假设是错误的。没有什么能阻止某人将您的程序集用作恶意软件中的引用库程序集。如果您已更改计算机的CAS策略以授予程序集完全信任,而不管它是如何部署的,则恶意软件可能会使用您的程序集执行其本来没有足够权限的操作。
这样做的结果是,不管您的部署方案是什么,您都应该做一些事情来阻止以调用代码的名义满足链接需求。考虑到你自己的目标是一个完全信任的场景,这实际上是相当容易的。
对于.NET 2.0,解决此问题的最简单方法是对程序集应用SecurityTransparentAttribute或SecurityCriticalAttribute。这两个属性都将导致程序集中的代码在默认情况下变得安全透明,这意味着它不能代表调用方执行诸如满足链接要求之类的操作。如果代码的某些部分需要执行不允许对透明代码进行安全性保护的操作,则应在程序集级别使用SecurityCriticalAttribute而不是SecurityTransparentAttribute,因为这样可以在需要时显式将类型和/或成员提升到安全关键级别。(有关更多详细信息,请参见 http://blogs.msdn.com/b/shawnfa/archive/2005/08/31/when-the-opposite-of-transparent-isn-t-opaque.aspx .) |
![]() |
2
1
如果我理解正确: http://msdn.microsoft.com/en-us/library/system.security.allowpartiallytrustedcallersattribute.aspx
AllowPartiallyTrustedCallers告诉.NET,你不在乎是谁调用它。 似乎.NET 4中的安全模型发生了变化。 |