【发布时间】:2014-05-09 10:41:00
【问题描述】:
在 C# 4.0+ 中,有没有一种好方法可以根据方法属性限制方法的允许调用者?
我天真地认为这就是 CAS 的全部意义所在——而现在 .NET 4.0 中的变化似乎表明新的 CAS 仅适用于程序集级别,并且仅适用于沙盒应用程序……这不是什么我在追。
我在想象这样的事情:
[MyDangerousPermission]
public void DoSomethingDangerous()
{
. . .
}
在另一个类或程序集中:
[MyDangerousDemand]
public void AllowedCaller()
{
DoSomethingDangerous();
}
如果没有[MyDangerousDemand] 调用堆栈中的某个位置,任何对DoSomethingDangerous() 的调用都会失败(例如,抛出SecurityException)。
不可能?
(我的主要应用程序在一个网络应用程序中,以防万一)。
【问题讨论】:
-
CAS 从来不是为了保护 Web 应用程序,它旨在防止您不信任的代码。允许用户将代码上传到 Web 服务器是……不明智的。但是有可能,您当然会不信任他们上传的整个程序集,而不仅仅是一种方法。如果您不信任自己的代码,那么您将遇到更大的问题。您只是看错了角落的可能性很高。
-
我的应用不涉及任何上传的代码;这不是我要防止的情况。
标签: c# security .net-4.0 attributes code-access-security