- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
想象以下环境:XBAP以部分信任模式运行的应用程序(默认行为;要求完全信任不是一个选项 - 但在您询问之前,如果对 XBAP 给予完全信任,一切都会按预期工作)正在引用本地安装的程序集,位于 GAC 中。为此,我们为本地程序集启用“AllowPartiallyTrustedCallers
”选项,并授予完全信任。 (想象这是某种本地连接对应物)
(顺便说一下,我们知道使用 AllowPartiallyTrustedCallers 属性的安全方面,但这超出了本文的范围,只是不关心)
现在,即使我们的本地 GAC 程序集具有完全信任(我们可以随时调用 Assembly.GetExecutingAssembly().IsFullyTrusted
来检查这一点),它也会失败任何要求(隐式或显式),因为它是由部分受信任的调用者(我们的 XBAP)调用的。 (如果我误解了什么请纠正我)。幸运的是,我们可以在本地 GAC 程序集内进行显式断言以获得权限,例如:
new System.Security.Permissions.FileIOPermission(.....).Assert();
这样,我们就可以在此时阻止按需遍历整个堆栈,并根据需要进行任何文件访问。 (再次,请纠正我......)这实际上非常有效!(在本例中)
问题是,我们只是不做任何文件 IO,事实上我们正在调用外部库,它应该能够做任何他们想做的事情(而且他们可能会做很多事情,访问注册表,发出 Web 服务请求,写入文件,调用非托管代码——具体细节我们不知道,但我们可以信任它们),并阻止需求堆栈遍历到达我们部分信任的调用者.我们应该能够实现这一目标,因为一切都是从我们本地安装且受信任的 GAC 程序集完成的。 (同样,请不要关心这里的安全方面,只是假设,我们可以信任客户)
解决方法:
我们首先想到的是,在使用外部库之前,对几乎所有权限声明一组权限 (PermissionSet)。这几乎可以工作,但看起来在某些时候仍然会发生安全异常 - 要么是因为外部库可能会启动更多线程,但由于某种原因失败,或者因为它访问 entryassembly - 事实上,我们不知道。
其次,我们尝试了以下属性
[System.Security.Permissions.PermissionSet(
System.Security.Permissions.SecurityAction.Assert, Name = "FullTrust")]
也没用。
第三,我们考虑打开一个新的 AppDomain,使完全受信任的 GAC 程序集成为 AppDomains 入口点,并在该应用程序域内运行任何东西 - 任何堆栈遍历都无法再到达部分受信任的调用者 - 在我们的理论中) .不幸的是,我们无法实现这个……或者新创建的 AppDomain 无法满足更多要求,即使设置为在“MyComputer”安全区域证据或不受限制的 SecurityPermission 下运行。我无法明确授予对整个 AppDomain 的完全信任。
第四,使用caspol 不是一种选择。 (由于部署原因)
现在,由于这应该是很多信息,我希望您了解我们要存档的内容。
直截了当:完全信任的程序集如何断言对其调用的程序集完全信任,停止所有堆栈遍历以到达部分信任的调用方?
非常感谢
最佳答案
查看 Microsoft 关于允许 Partially Trusted Callers to Full Trust Assemblies 的文档我不相信这是可能的。
你一直强调我们需要避免安全问题,但实际上,你试图用你的解决方案做的是基本上绕过 .NET Framework 中代码访问安全系统的每个部分,我'您将很难相信您将能够获得可行的解决方案。
除此之外,我无法想象这个过程真的需要这样来完成。
您不能将此处理从部分受信任的调用方卸载,然后将通信传递给本地运行且已经受信任的东西吗?
关于.net - 在部分信任程序集调用的受信任程序集中授予 FullTrust,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2387564/
从今天早上开始,我的证书在 Android 上不再受信任,然后我的应用程序无法再连接: Catch exception while startHandshake: javax.net.ssl.SSL
我想知道是否有人有解决方案允许从usize类型(从访问数组索引或获取矢量长度中获得)的隐式转换为i32?可能吗? 当然,我假设矢量长度和数组范围在i32限制之内。 最佳答案 您可以在函数参数中使用 T
我用 mitmproxy从离开我们网络的出站 AS2 (HTTP) 请求中收集情报。架构是这样的: Mendelson AS2 ➡ mitmproxy ➡ partner AS2 server
我有几个实例,我的 Javascript 代码似乎在泄漏内存,但我不确定我应该从垃圾收集器那里得到什么。 例如 var = new Object() 在 Firefox 中运行的间隔计时器函数似乎会随
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎不是关于 a specific programming problem, a softwa
我想我在这里没有想法。 我正在尝试使用具有 ssl 证书的 java 中的 Web 服务。 我创建了一个 keystore 文件,并在其中添加了证书。该文件位于我的项目文件夹中。 我使用以下方式导入它
我在/etc/pki/ca-trust/source/anchors 中添加了一个 crt,这样服务器证书就可以被 ssl 客户端信任。所以,例如,当我 curl https://证书自动受信任。 有
我搜索了很多帖子,但找不到任何解决方案或问题的答案。如何从安装了中间证书的站点下载文件?使用 DownloadManager 时,出现错误“java.security.cert.CertPathVal
我无法使用 SSL: 我从服务器下载了证书,它运行良好。 我还使用本文中的代码将 myCertificate.cert 添加到我的 iPhone 钥匙串(keychain)线程:Importing a
首先,我知道信任所有证书可能存在的风险,但是出于某些测试目的,我必须实现这一点。 如何强制我的客户信任所有证书?我正在使用 javax.websocket 来实现 我所做的只是像连接到 ws 一样 W
信任 $_SERVER['REMOTE_ADDR'] 是否安全?可以通过更改请求的 header 或类似的东西来代替吗? 这样写安全吗? if ($_SERVER['REMOTE_ADDR'] ==
我有一个产品由内部 ASP.NET/MVC 网站组成,所有网站都使用 WIF 通过自定义 STS/IdP 服务启用 SSO。我们现在有一个新的合作伙伴站点托管在我们网络之外的另一个域上,并且希望在用户
我在我开始构建的 Rails 应用程序上使用 sendgrid。我处于测试模式,主要做本地工作,但我发送了很多电子邮件来检查我的流程或电子邮件布局。 我用来接收电子邮件的电子邮件是在 Gmail 上。
我一直在研究我得到的原因: java.util.concurrent.ExecutionException: javax.net.ssl.SSLException: Received fatal al
我有 SVN 服务器通过 HTTPS 在 Apache 下运行 这是我的服务器端配置,“/etc/httpd/conf.d/subversion.conf”: SSLRequireSSL S
我有一个用于开发测试的自签名证书。我已将它添加到证书管理器中的“受信任的根证书颁发机构”文件夹下,当在 IE 或 Chrome 下访问该站点时,它被认为是有效的(在 Firefox 下它不喜欢它是自签
我遇到了 android 4 设备的问题,这些设备在连接到服务器时收到以下异常: java.security.cert.CertPathValidatorException: Trust anchor
我是一个安卓新手。这个问题已经被问过很多次了,但我已经解决了这里几乎所有的问题。 我正在尝试在 Node.Js 服务器(使用 express)和 Android 上的 Volley 上使用自签名证书。
我想使用 WebClient 从安全服务器检索 JSON 文件,但我的 Windows Phone 8 不允许我这样做,因为如果 WebCLient 不信任 SSL 证书,它会抛出异常。 问题在于它不
我正在编写服务器以支持适用于 iOS 和 Android 的基于位置的应用程序。该应用程序要求我们验证用户的身份及其位置。我知道如何做前者,但不知道后者。 是否可以验证客户端发送给我的纬度/经度实际上
我是一名优秀的程序员,十分优秀!