【发布时间】:2023-03-28 04:33:02
【问题描述】:
我有一些代码可以检索一些 xml,然后尝试验证 xml 签名。 根据this post的说法,SignedXml类型的验证方式需要完全信任才能进行xml签名验证。由于我的代码需要在沙箱中运行,我没有完全信任,因此引发了安全异常。
如果是这种情况,那么是否有其他方法可以验证 xml 签名(最好不需要购买 3rd 方软件)?
【问题讨论】:
标签: c# xml sandbox xml-signature
我有一些代码可以检索一些 xml,然后尝试验证 xml 签名。 根据this post的说法,SignedXml类型的验证方式需要完全信任才能进行xml签名验证。由于我的代码需要在沙箱中运行,我没有完全信任,因此引发了安全异常。
如果是这种情况,那么是否有其他方法可以验证 xml 签名(最好不需要购买 3rd 方软件)?
【问题讨论】:
标签: c# xml sandbox xml-signature
这似乎是不可能的。我的解决方法是避免依赖签名的 xml 并添加哈希。这远没有那么安全,但我可以在不使用任何完全信任代码的情况下做到最好。
【讨论】:
如果您不需要使用XmlResolver,我认为有一种方法可以做到这一点。
MSDN docs 表示“在 .NET Framework 1.1 版中,调用者必须完全受信任才能指定 XmlResolver。”。我正在使用 .NET 4.5 在中等信任环境中运行,并且我可以成功设置XmlResolver。因为我知道我永远不需要在我的 XML 文档中解析任何外部引用(解释这意味着什么 here)我可以将 SignedXml.Resolver 设置为 null。就我而言,这解决了问题并允许在共享托管环境 (GoDaddy) 中使用 SignedXml。
请注意,如果您想使用SecureXmlResolver,您将需要FullTrust。
【讨论】: