結論
安裝3141780 安全性更新 (於 Microsoft 資訊安全公告 MS16-035 中所述) 後,.NET 應用程式可能在其處理包含 SignedXml 的檔案時遇到例外狀況錯誤或意外錯誤。
其他相關資訊
重要這個章節、方法或工作包含修改登錄的步驟。然而,如果您不當地修改登錄,可能會發生嚴重的問題。因此,請務必謹慎地依照這些步驟執行。為加強保護,修改登錄之前,請務必將其備份。那麼您便可以在發生問題時還原登錄。如需有關如何備份和還原登錄的詳細資訊,請按一下下面的文章編號,檢視「Microsoft 知識庫」中的文章:
322756如何在 Windows 中備份及還原登錄
案例 1
案例 1 徵狀
受管理的應用程式傳回包含以下簽章的錯誤例外狀況:
System.Security.Cryptography.CryptographicException:Unable to resolve Uri [FileOrUrl].
範例
System.Security.Cryptography.CryptographicException:Unable to resolve Uri testfile.xml.
案例 1 解決方法
客戶可以將下列登錄機碼套用至他們的系統:
登錄項目
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\Security@SignedXmlAllowDetachedSignature=1
可供下載的 .Reg 檔案
若要解決此問題,請按一下適用的連結,然後在下載的檔案上按兩下以變更登錄。
SignedXml-ExternalReferences.reg (32 位元系統上的 32 位元處理序和 64 位元系統上的 64 位元處理序)
SignedXml-ExternalReferences.Wow6432.reg (64 位元系統上的 32 位元處理序)
注意事項
-
此登錄項目應是 DWORD 項目。
-
此登錄項目會還原先前的行為,此行為即是開啟或下載在經驗證以計算其摘要之文件外部的資源。
警告 啟用此登錄機碼可能會允許阻斷服務、分散式反映阻斷服務、資訊洩漏、簽章略過及遠端執行程式碼等資訊安全漏洞。
案例 2
案例 2 徵狀
已預期成功時發生簽章驗證失敗。
案例 2 解決方法
如果內容包含下列簽章區塊,請考慮套用提供的登錄機碼:
簽章區塊範例
<Document>
…
<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
<SignedInfo>
<CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
<SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1" />
<Reference URI="...">
<Transforms>
<Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116" /></Transforms> <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" /> <DigestValue>…</DigestValue> </Reference> </SignedInfo> <SignatureValue>…</SignatureValue> </Signature> …
</Document>
登錄項目
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\Security\SafeTransformMethods@XmlDsigXPathTransform=http://www.w3.org/TR/1999/REC-xpath-19991116
可供下載的 .Reg 檔案
若要解決此問題,請按一下適用的連結,然後在下載的檔案上按兩下以變更登錄。
XmlDSigXPathTransform.reg (32 位元系統上的 32 位元處理序和 64 位元系統上的 64 位元處理序)
XmlDSigXPathTransform.Wow6432.reg (64 位元系統上的 32 位元處理序)
如果簽章區塊包含下列文字,請考慮套用提供的登錄項目:
簽章區塊範例
<Document>
…
<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
<SignedInfo>
<CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
<SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1" />
<Reference URI="...">
<Transforms>
<Transform Algorithm="http://www.w3.org/TR/1999/REC-xslt-19991116" /></Transforms><DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" /><DigestValue>…</DigestValue></Reference></SignedInfo><SignatureValue>…</SignatureValue></Signature>…
</Document>
登錄項目
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\Security\SafeTransformMethods@XmlDsigXsltTransform=http://www.w3.org/TR/1999/REC-xslt-19991116
可供下載的 .Reg 檔案
若要解決此問題,請按一下適用的連結,然後在下載的檔案上按兩下以變更登錄。
XmlDSigXsltTransform.reg (32 位元系統上的 32 位元處理序和 64 位元系統上的 64 位元處理序)
XmlDSigXsltTransform.Wow6432.reg (64 位元系統上的 32 位元處理序)
注意 依預設,僅啟用由 .NET Framework 提供且不接受已簽署文件輸入的 XML 簽章轉換。若要啟用接受輸入的轉換或自訂轉換,必須將該轉換的登錄 URI 指定為包含於此登錄機碼中的 REG_SZ 輸入值資料。值的名稱並不會加以處理,並且可以是電腦系統管理員選擇的任何名稱。
警告 XPath 和 XSLT 轉換會允許文件傳送者建構運算成本高的文件。此行為可能會造成阻斷服務的情況。