本文提供此 API 參考文件的補充備註。
您可以使用 Create 方法來取得 XmlReader 實例。 這個方法會使用 XmlReaderSettings 類別來指定該類別在其所建立的 XmlReader 物件中實作哪些功能。
如需了解設定用於一致性檢查、驗證及其他常見情境的相關資訊,請參閱XmlReader 和 Create 參考頁面的小註解。 如需預設設定的清單,請參閱建 XmlReaderSettings() 構函式。
安全性考慮
在使用 XmlReaderSettings 類別時,請考慮下列事項。
預設情況下,ProcessInlineSchema 物件的 ProcessSchemaLocation 和 XmlReaderSettings 驗證旗標不會被設定。 設定這些旗標時,XmlResolver 物件的 XmlReaderSettings 會用來解析在 XmlReader實例檔中遇到的架構位置。 XmlResolver物件如果是
null,即使已設定ProcessInlineSchema和ProcessSchemaLocation驗證旗標,架構位置也不會被解析。在驗證期間新增的架構會新增類型,並可變更正在驗證之文件的驗證結果。 因此,只能從信任的來源解析外部架構。
驗證錯誤訊息可能會公開敏感性內容模型資訊。 驗證錯誤和警告訊息是透過使用ValidationEventHandler委派來處理,否則,如果XmlSchemaValidationException物件沒有提供事件處理程式,則會被公開為XmlReaderSettings。驗證警告不會導致擲出XmlSchemaValidationException。 此內容模型資訊不應該在不受信任的案例中公開。 默認會隱藏驗證警告訊息,而且可以藉由設定 ReportValidationWarnings 旗標來報告。
的 SourceUriXmlSchemaValidationException 屬性會傳回造成例外狀況之架構檔案的 URI 路徑。 屬性 SourceUri 不應在不受信任的情境中公開。
建議在高可用性方案中,當驗證不受信任的大型 XML 文檔時,停用預設啟用的ProcessIdentityConstraints旗標,特別是在文檔大部分具有身份約束的架構上。
XmlReaderSettings 物件可以包含敏感性資訊,例如用戶認證。 在快取 XmlReaderSettings 物件或將 XmlReaderSettings 物件從某個元件傳遞至另一個元件時,您應該小心。
預設會停用 DTD 處理。 如果您啟用 DTD 處理,您必須注意包括來自不受信任來源的 DTD,以及可能的阻斷服務攻擊。 使用XmlSecureResolver來限制XmlReader可以存取的資源。
不接受來自不受信任來源的支援元件,例如 NameTable、XmlNamespaceManager和 XmlResolver 物件。
使用 XmlReader 之應用程式的記憶體使用量可能與剖析的 XML 檔案大小有相互關聯。 一種形式的阻斷服務攻擊是當提交過於龐大的 XML 文件以進行剖析時。 您可以藉由設定 MaxCharactersInDocument 屬性來限制可剖析的檔大小,然後藉由設定 MaxCharactersFromEntities 屬性來限制擴充實體所產生的字元數目。