问题标签 [partial-trust]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
6733 浏览

.net - 在由部分信任程序集调用的受信任程序集中授予 FullTrust

想象以下环境:在部分信任模式下运行的XBAP应用程序(默认行为;要求完全信任不是一个选项 - 但在您询问之前,如果 XBAP 完全信任,一切都按预期工作)正在引用本地安装的程序集,位于 GAC 中。为此,我们AllowPartiallyTrustedCallers为本地程序集启用“”选项,并授予完全信任。(想象这是某种本地连接对应物)

(顺便说一下,我们知道使用 AllowPartiallyTrustedCallers 属性的安全方面,但这超出了本文的范围,只是不关心)

现在,即使我们的本地 GAC 程序集完全信任(我们可以通过Assembly.GetExecutingAssembly().IsFullyTrusted随时调用来检查),它也会失败任何请求(隐式或显式),因为它是由部分信任的调用者(我们的 XBAP)调用的。(如果我误解了什么,请纠正我)。幸运的是,我们可以通过显式断言来获得本地 GAC 程序集内的权限,例如:

这样,我们就可以在此时阻止对需求的完整堆栈遍历,并根据需要进行任何文件访问。(再次,请纠正我......) 这实际上非常有效!(在这种情况下)

问题是,我们只是不做任何文件 IO,实际上我们正在调用外部库,它们应该能够做他们想做的任何事情(他们可能会做很多事情,访问注册表,发出 Web 服务请求,写文件,调用非托管代码 - 细节我们不知道,但我们可以信任它们),并防止需求堆栈遍历到达我们部分信任的调用者。我们应该能够实现这一点,因为一切都是通过我们本地安装和受信任的 GAC 程序集完成的。(再次,请不要在这里关心安全方面,假设我们可以信任客户端)

解决这个问题的方法:

  • 我们首先想到的是,在使用外部库之前,为几乎所有权限声明一组权限 (PermissionSet)。这几乎可以工作,但看起来在某些时候仍然会发生安全异常——要么是因为外部库可能会启动更多由于某种原因而失败的线程,要么是因为它访问了入口程序集——事实上,我们不知道。

  • 二、我们尝试了以下属性

p>

它也没有用。

  • 第三,我们考虑打开一个新的 AppDomain,使完全受信任的 GAC 程序集成为 AppDomains 入口点,并在此 appdomain 内运行任何东西——任何堆栈遍历都无法再到达部分受信任的调用者——在我们的理论中)。不幸的是,我们无法实现这一点……或者新创建的 AppDomain 未能满足更多要求,即使设置为在“MyComputer”安全区域证据或不受限制的 SecurityPermission 下运行。我无法明确授予对整个 AppDomain 的完全信任。

  • 第四,不能选择使用caspol。(由于部署原因)

现在,由于这应该是很多信息,我希望您了解我们要存档的内容。

为了明确这一点:完全受信任的程序集如何对其调用的程序集断言完全信任,停止所有堆栈遍历以到达部分受信任的调用者?

提前谢谢了

0 投票
1 回答
296 浏览

.net - 确定 ClickOnce 应用程序是否以部分信任模式 (.NET) 运行

如果我的应用程序在部分信任模式下运行,是否有任何方法可以识别(在运行时)?我正在考虑部署两个版本的 ClickOnce 应用程序 - 一个完全信任,另一个部分信任,根据部署模式,我想做一些不同的事情(例如在完全信任上缓存下载的图像)

我已经研究过使用独立存储,但显然你的存储空间被限制为 10K:不适合图像缓存!

0 投票
6 回答
58793 浏览

c# - 程序集不允许部分信任的调用者

如何更改我的库以允许部分信任的调用者?

我收到以下错误:

“/”应用程序中的服务器错误。

安全异常

说明:应用程序试图执行安全策略不允许的操作。要授予此应用程序所需的权限,请联系您的系统管理员或在配置文件中更改应用程序的信任级别。

异常详细信息:System.Security.SecurityException:该程序集不允许部分受信任的调用者。

源错误:[没有相关的源行]

源文件:App_Web_kzj7vfkn.2.cs
行:0

编辑

在对问题进行了更多研究之后,似乎是 System.Web.UI.ClientScriptManager 导致了问题

0 投票
1 回答
1390 浏览

c# - 使用 WCF 服务的 WPF Web (xbap) 引发 System.Net.webPermission 异常

我有一个 xbap 应用程序在我的本地机器的 IIS 7.5 上以部分信任运行。我将 WCF 服务发布到与 xbap 相同的目录。

在经历了一些麻烦之后,我可以通过 Visual Studio 来调试它,但在它发布后我似乎无法让它在 IIS 服务器上工作。

我在 .Net 4.0 上运行

错误内容:“请求 System.Net.webPermission 类型的权限,系统版本=4.0.0.0,文化中立,PublicKeyToken=b77a5c56l934e089 失败。”

更新:

所以我重新开始,制作了一个新的 Wcf 服务、一个新的 Xbap 和一个新的站点来部署。在验证了每一步之后,我得到了它的工作。因此,我开始将我以前的应用程序一个一个地集成到新站点上,以发现问题所在。我把它缩小到我原来的 Wcf 服务,但是在使它与工作的服务相同之后,它仍然有 WebPermission 错误。

所以,除了重做修复它之外,我仍然不知道是什么导致了问题。

0 投票
1 回答
252 浏览

silverlight-4.0 - 提高对 silverlight4 的信任是否也提高了 MAC OS

Silverlight4 提供了在提升的信任下运行的选项 http://www.silverlightshow.net/items/Silverlight-4-elevated-permissions.aspx

有谁知道它是否也在 MAC OS X 上提供了一定程度的提升?

0 投票
1 回答
2353 浏览

asp.net - NPOI dll(第三方 excel 编写器 dll)....System.Security.SecurityException:该程序集不允许部分受信任的调用者

我在 Asp.net mvc 框架上开发了门户。我在 godaddy 托管这个网站。我在集成第三方 dll 时遇到了很大的问题,即 NPOI(excel writer dll)。它显示以下错误。

安全异常

堆栈跟踪:

为了解决这个问题,我在 web.config 文件中添加了这个代码行。

和 [assembly: AllowPartiallyTrustedCallers()] 到 Assemblyinfo.cs。但是磨损不起作用。主要问题是什么,解决方案是什么???请帮助我...

0 投票
1 回答
555 浏览

nhibernate - 编译 Castle.ActiveRecord 以允许部分信任?

如何构建 Castle.Core、Castle.ActiveRecord 和 NHibernate 以允许部分信任?网上有很多资源展示了如何做到这一点,但是我发现的每个站点都说用来nant build -D:assembly.allow-partially-trusted-callers=true构建每个程序集。当我在这里查看 Castle.Core主干时,没有 *.build 文件。

如何实现?我正在使用 .NET 3.5 。这不是一个网络应用程序。

编辑:我们正在使用 NHibernate 2.1.2GA(我相信是最新的稳定版本)。下面给出的说明的问题在于,他们似乎指的是从主干构建 Castle.Core 和 Castle.ActiveRecord。Trunk 似乎需要与我们的版本不匹配的 NHibernate 3.0.0。

解决方案

几乎我所有的调整都是在项目属性下的安全选项卡中完成的。

  • 在“将安装您的应用程序的区域:”标签下,我选择了“(自定义)”
  • 至于应用程序所需的权限,我必须包括 SqlClientPermission 以及 UIPermission。为了消除未来开发的问题,我选择了“授予程序集对 x 的无限制访问”,其中选择的权限是什么。这是为上面显示的两个权限完成的。请注意,您选择包含的权限将基于每个应用程序,并且没有两种情况是相同的。
  • 在“高级...”按钮下,我取消了两个选项(“使用所选权限集调试此应用程序”和“授予应用程序访问其原始站点的权限”)。

此外,由于应用程序和 SQL Server 位于不同的域下,我必须将连接字符串设置为包括数据库服务器域。所以我原来的连接字符串数据源必须从“Data Source=DB_SERVER”变成“Data Source=DB_SERVER.DOMAIN”。

最后,我必须设置requirePermission="false"我所有的配置部分。我的configSections结局是这样的:

在一切都说完之后,我成功地在来自不同域的文件共享上发布了这个应用程序,并且让用户安装应用程序没有任何问题。将这些步骤应用于我们的其他应用程序并使用我们新编译的程序集也很有效。

0 投票
3 回答
16133 浏览

c# - 该程序集不允许部分受信任的调用者。初始化组件()

场景:我正在重构我们的一个应用程序以使用 Nhibernate,并在几周前遇到了这个问题。该问题最初是与 Nhibernate 和 Castle 相关的,为了解决这个问题,它们都使用[assembly: AllowPartiallyTrustedCallers]. 然而,在对 UI 和代码库进行一些更改后,此错误再次出现。另外值得注意的是,我从 Form_Main 以编程方式控制加载我的用户控件。

问题:每当生成用户控件时,我都会收到以下错误。如果我注释掉加载,那么程序将运行。当我调试时,它以自动生成的 InitializeComponent() 函数结束。请注意,我无法进入该功能。

有人对这个主题有任何想法吗?我已经将 [assembly: AllowPartiallyTrustedCallers] 添加到程序集中。有什么方法可以找出导致此错误的参考(?)?或者有什么方法可以逐步完成 InitializeComponent()?

注意:我拥有所有权限,并且项目设置为部分信任。

无论如何,非常感谢任何帮助。

0 投票
2 回答
654 浏览

silverlight - 是否可以在没有 IIS 的情况下使用 Silverlight RiaServices?

我想使用 silverlight 作为我的 windows 服务接口。为此,我使用自定义 Web 服务器来提供 xap 文件,它工作正常。

现在我想使用 RiaServices,但当然我没有涉及 IIS。

这是我的代码:

和程序:

您可以在空的 cmd 应用程序中使用此代码,一旦您点击播放,就会引发运行时异常:

System.TypeAccessException 未处理 消息=通过安全透明方法“System.ServiceModel.DomainServices.Server.DomainTypeDescriptionProvider.GetForeignKeyMembers()”访问安全关键类型 System.ComponentModel.DataAnnotations.AssociationAttribute 的尝试失败。程序集 'System.ComponentModel.DataAnnotations, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' 是有条件的 APTCA 程序集,在当前 AppDomain 中未启用。要使该程序集被部分信任或安全透明代码使用,请添加程序集名称'System.ComponentModel.DataAnnotations,PublicKey=0024000004800000940000000602000000240000525341310004000001000100B5FC90E7027F67871E773A8FDE8938C81DD402BA65B9201D60593E96C492651E889CC13F1415EBB53FAC1131AE0BD333C5EE6021672D9718EA31A8AEBD0DA0072F25D87DBA6FC90FFD598ED4DA35E44C398C454307E8E33B8426143DAEC9F596836F97C8F74750E5975C64E2189F45DEF46B2A2B1247ADC3652BF5C308055DA9' to the the PartialTrustVisibleAssemblies list when creating the AppDomain. Source=System.ServiceModel.DomainServices.Server TypeName="" StackTrace:在 System.ServiceModel.DomainServices.Server.DomainTypeDescriptionProvider.GetForeignKeyMembers() 在 System.ServiceModel.DomainServices.Server.DomainTypeDescriptionProvider.GetTypeDescriptor(Type objectType, Object instance) 在 System .ComponentModel.TypeDescriptor.TypeDescriptionNode.DefaultTypeDescriptor.System.ComponentModel。System.Collections.Concurrent.ConcurrentDictionary 处的DisplayClass8.b _7(类型类型)2.GetOrAdd(TKey key, Func2 valueFactory) 在 System.ServiceModel.DomainServices.Server.DomainServiceDescription.GetDescription(Type domainServiceType) 在 System.ServiceModel.DomainServices.Hosting.DomainServiceHost..ctor(Type domainServiceType, Uri[] baseAddresses) 在 PartialTrustTest.Program.Main(String[ ] args) 在 D:\Users\carlucci\Documents\My Dropbox\My Dropbox\Way2\PartialTrustTest\PartialTrustTest\Program.cs:第 10 行 System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args) 在 System.AppDomain .nExecuteAssembly(RuntimeAssembly 程序集,String[] args) 在 System.Runtime.Hosting.ManifestRunner.Run(Boolean checkAptModel) 在 System.Runtime.Hosting.ManifestRunner.ExecuteAsAssembly() 在 System.Runtime.Hosting.ApplicationActivator.CreateInstance(ActivationContext activationContext ,String[] activationCustomData) 在 System.Runtime.Hosting.ApplicationActivator.CreateInstance(ActivationContext activationContext) 在 System.Activator.CreateInstance(ActivationContext activationContext) 在 Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssemblyDebugInZone() 在 System.Threading.ThreadHelper.ThreadStart_Context(对象状态)在 System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx) 在 System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 在 System.Threading.ThCreateInstance(ActivationContext activationContext) at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssemblyDebugInZone() at System.Threading.ThreadHelper.ThreadStart_Context(Object state) at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx)在 System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 在 System.Threading.ThCreateInstance(ActivationContext activationContext) at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssemblyDebugInZone() at System.Threading.ThreadHelper.ThreadStart_Context(Object state) at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx)在 System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 在 System.Threading.ThSystem.Threading.Th 处的 ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)System.Threading.Th 处的 ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)

readHelper.ThreadStart() 内部异常:


我尝试将 System.ComponentModel.DataAnnotations 添加到 APTCA,但没有成功:(

我更改了我的应用程序以完全信任运行,但没有成功:(

任何想法?

0 投票
2 回答
346 浏览

asp.net - ASP.NET MVC 2、Ninject 和部分信任托管

我正在读一本关于 ASP.NET MVC 2 的书,当我读到它如何使用反射来计算参数或如何使用 Ninject 来引入松散耦合模型时,我想知道......这是否会部分工作信任环境?

我记得,部分信任的限制之一是反思,这让我大吃一惊:(

有这方面的经验吗?

太感谢了。