问题标签 [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 投票
3 回答
8614 浏览

.net - .NET 中的部分受信任的程序集/应用程序/代码/等是什么?

有人可以解释一下吗?我在互联网上找不到任何东西,所有内容都在谈论如何以某种方式进行,但没有确切说明它是什么。

此外,什么是完全受信任的程序集,它们之间有何不同?

我有一个 MS 认证考试,这是我唯一不明白的话题。

编辑:谢谢大家。现在我对 .NET 中的安全性有了更好的理解。我能够通过我的认证考试。

0 投票
2 回答
12342 浏览

.net - 如何在部分信任环境中使用我的 app.config 的 system.net 部分?

我有一个使用 clickonce 部署的 WCF 应用程序。它使用 https 连接到我的服务器,一切正常

由于以下代码,我在需要时使用默认代理:

在完全信任模式下,一切正常

现在,如果我将我的安全设置设置为部分信任,如果不涉及代理,它确实可以正常工作,但如果我尝试在公司环境中启动我的软件,则不再自动检测到代理。

据我了解:

configSections 不再在部分信任环境中解析,除非设置了 requirePermission 属性,如下所示:


设置此属性会引发带有以下错误消息的 System.Configuration.ConfigurationException:

部分或组名称“defaultProxy”已定义。对此的更新可能只发生在定义它的配置级别。

'defaultproxy' 部分确实已经在 machine.config 文件中定义:

但是,只要未设置 requirePermission,这似乎不是问题。换句话说,错误消息似乎应该改为:

部分或组名 'defaultProxy' 已使用另一个 requirePermission 设置定义。对此的更新可能只发生在定义它的配置级别。


有人遇到同样的问题吗?是否可以在部分信任模式下静默使用 WCF 应用程序中的默认代理?我也尝试以编程方式设置代理,但没有成功

wshttpbinding 的 useDefaultWebProxy 属性从一开始就直接设置,但在部分或完全信任环境中,如果没有正确定义 'system.net.defaultProxy' 部分,似乎不起作用:

我想我可以要求我的客户更新他们的本地 machine.config 文件以添加所需的 defaultProxy useDefaultCredentials="true",但这绝对不会简化部署。

0 投票
2 回答
350 浏览

.net - 如何在部分信任环境中访问我的程序集版本号(无 FileIOPermission)

我正在尝试在运行时访问我的程序集的版本号。

我使用的代码需要 FileIOPermission,我不想授予(我在 Internet 区域)

是否有另一种方法可以访问不需要提升的版本号?

0 投票
1 回答
248 浏览

.net - 如何从部分受信任的 .NET 应用程序中刷新任务栏?

我想刷新任务栏(例如这里描述的),但我不能在我的应用程序运行的安全上下文中P/Invoke FlashWindowEx(或其他任何东西)。

还有其他方法可以让任务栏闪烁吗?如果没有,我有哪些选择来吸引用户的注意力?

0 投票
2 回答
227 浏览

.net - 部分信任场景中 DataContracts 中的集合

在设计用于序列化的 DataContracts 时,我一直很困惑。

假设我有一个对象(例如客户),它公开了一个集合属性(例如一个名为 Addresses 的 AddressCollection)。框架设计指南规定我不应该公开该属性的公共 mutator,即,集合属性应该有一个 get 和没有 set,而是一个公共 set 方法(public void SetAddresses(IEnumerable<Address>addresses))。

但是,如果我想序列化该对象,并且我预计我将处于部分信任环境中,我是否必须向该属性添加一个公共设置器以便它可以正确反序列化?

此外,如果集合在序列化时没有任何内容,并且由于 DataContractSerializer 没有调用默认构造函数,我很确定该集合根本没有设置并且保留为空。我可以使用 OnSerializing 属性来初始化集合,但是在部分信任的情况下,方法也必须是公共的,不是吗?这更难看。

有谁知道这里的适当指导?

非常感谢。

0 投票
2 回答
347 浏览

.net - 如何检测哪些程序集需要部分受信任的调用者属性?

我从 CodePlex 下载了一个 Web 项目,并在 Application_Start 中收到以下错误:

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

该项目引用了来自其他开源项目的几个其他程序集。我的理论是其中之一没有AllowPartiallyTrustedCallers属性集(CodePlex 项目中的所有程序集都有)。

如何判断哪些程序集具有此属性集,哪些没有?

0 投票
3 回答
1825 浏览

.net - 在部分信任环境中调用 Marshal.GetHRForException (SecurityPermission)

我有一些 IO 代码可以读取 try..catch 中的流。它捕获 IOException 并在捕获中调用System.Runtime.InteropServices.Marshal.GetHRForException() ,以尝试根据 HResult 采取不同的操作。像这样的东西:

该程序集使用AllowPartiallyTrustedCallersAttribute进行签名和标记。

但是在 ASP.NET 中使用 trust="medium" 运行这段代码,我得到了这个异常:

几个问题:

  1. 我认为发生异常是因为 GetHRForException 调用了非托管代码,这在中等信任中是不允许的。正确的?
  2. 抛出此异常,不是在执行 GetHRForException 时,而是在方法被 JIT 处理时 - 对吗?(堆栈跟踪显示了我的方法,但我 99% 确定没有发生 IO 异常)
  3. 如果是这样,有没有办法让我改变部分信任环境中的行为,这样我就不会在不允许的地方调用 GetHRForException (非托管代码)?换句话说,如何让 JIT 在编译时成功,同时在运行时评估代码是否应该调用 GetHRForException()?像这样的东西:

我认为有一个运行时机制来测试权限是否可用,但一直找不到。


编辑这篇博客文章是答案吗?微软的 ShawnFa 说你不能在一个受 LinkDemand 保护的方法周围做一个 try ... catch(SecurityException)。如果 MethodA() 调用 MethodB(),并且 MethodB() 用 LinkDemand 标记为完全信任,则使用 MethodA 检查 LinkDemand is Jit'ed。因此,为了避免 SecurityException,我需要将 Marshal.GetHRForException 提取到一个单独的方法中。那是对的吗?

应用于我的代码,MethodA() 可能是调用 Read 的代码,然后在 catch 中尝试调用 GetHRForException()。GetHRForException 是 MethodB()。当 MethodA() 为 JIT 时评估 LinkDemand。(此 LinkDemand 在我的中等信任 ASP.NET 方案中失败)。如果我将 GetHRForException 移动到一个新方法 MethodC() 中,并且仅在命令式 permission.Demand() 成功后有条件地调用 MethodC(),理论上我应该能够在 JIT 时间避免 SecurityException,因为 MethodC() 将只有在 permission.Demain() 成功后才会进行 JIT。

0 投票
2 回答
581 浏览

linq - 部分信任环境中的实体框架

我知道实体框架支持部分信任,我个人在博客上写过

它工作正常,我测试了它,它很好。现在,如果您下载附在我关于该主题的帖子中的示例,它将不再在默认的部分信任下运行!!!

当我在故障位置使用反射器挖掘 System.Data.Entity 程序集“System.Data.Objects.LightweightCodeGenerator.ValidateSetterProperty(RuntimeMethodHandle setterMethodHandle, MethodInfo& setterMethodInfo, Type& realType”时,我注意到它调用了 RuntimeMethodHandle.Value 属性,该属性具有以下内容获取访问器“[SecurityPermission(SecurityAction.LinkDemand, UnmanagedCode=true)]”的属性

所以我去了我的中等信任配置并添加了另一个标志“UnmanagedCode”“”

我再次测试应用程序,它工作正常。

这到底是怎么回事?!它以前可以工作,为什么现在不行!有什么东西不见了!!!System.Data.Entity 在 VS.NET 2008 SP1 的几次频繁更新中是否发生了变化,最新的更新是在 2009 年 8 月制作的。因为在那之前,它运行良好。

因此,如果有人能澄清这一点并指导我,如果我错了,或者我遗漏了什么,我将不胜感激。

0 投票
1 回答
621 浏览

wpf - 是否可以在部分信任中运行独立的 WPF 应用程序(非 XBAP)?

我想如果在窗口中不使用简单图形以外的任何东西,我将能够在部分信任中运行独立的 WPF 应用程序(至少在 Intranet 上)。但不幸的是,即使是最简单的 Hello World 应用程序也无法加载主窗口并在以部分信任运行时崩溃。

任何人都可以解释为什么会发生这种情况,甚至理论上是否可能?

PS Simplest 控制台应用程序可以在 Intranet Zone 中以部分信任的方式运行,Winforms 可以在 Intranet 和 Internet 中运行(尽管在 Intranet Zone 中运行时会显示安全警告)

0 投票
1 回答
683 浏览

xbap - 如何从部分信任的 XBAP 应用程序中保存图片?

我有一个 XBAP 应用程序,它显示了一些图片,我的用户希望将其中一些保存到磁盘。但是我的 XBAP 应用程序在部分信任模式下运行,所以它无法启动SaveFileDialog,更不用说它无法访问文件系统。

在这种情况下,堆栈溢出推荐的将图片保存到磁盘的方法是什么?