rav*_*oli 6 c# appdomain .net-4.0
我有一个.net程序集,其方法不可验证.
我试图在沙盒应用程序域中加载此程序集.
如果我加载了跳过验证,但没有加载非托管我得到验证异常.像这样:
new SecurityPermission(SecurityPermissionFlag.Execution |
SecurityPermissionFlag.SkipVerification);
Run Code Online (Sandbox Code Playgroud)
如果我使用非托管权限加载它可以工作,但那么app域将不够"沙盒".
new SecurityPermission(SecurityPermissionFlag.Execution |
SecurityPermissionFlag.SkipVerification |
SecurityPermissionFlag.UnmanagedCode);
Run Code Online (Sandbox Code Playgroud)
另外 - 我正在运行.Net 4,并且为了使上述工作我必须切换到transperancy模型级别1,如下所示:
[assembly:SecurityRules(SecurityRuleSet.Level1)]
Run Code Online (Sandbox Code Playgroud)
所以,我的问题是:
谢谢!
有没有办法在没有 UnamangedCode 权限的情况下运行未经验证的代码。
即使有,那时你也会放弃任何安全感。不可验证的代码与非托管代码具有相同的功能。例如,它允许您破坏类型系统。
拥有 SkipVerification 而没有 UnmanagedCode(或反之亦然)是没有意义的。两者是等价的,我认为这是两者都存在的框架中的一个错误。