2010-03-31 90 views
3

The documentation說:.NET:XmlReaderSettings中ProhibitDtd屬性的用途是什麼?爲什麼DTD是一個安全問題?

設置爲true時,遇到任何DTD內容當XMLReader拋出XmlException。 如果您擔心拒絕服務問題或您正在處理不可信來源,請不要啓用DTD處理。

如果啓用了DTD處理,則可以使用XmlSecureResolver來限制XmlReader可以訪問的資源。您還可以設計您的應用程序,以便XML處理內存和時間受到限制。例如,在ASP.NET應用程序中配置超時限制。

有人能解釋一下這個問題嗎?

爲什麼讀者應用程序想要禁止檢索DTD?如果是閱讀應用程序,拒絕服務問題在哪裏?什麼是提到的「信任」問題?

感謝

回答

3

看一看MSDN Magazine這也解釋了相關的DTD攻擊。總之,可以創建一個相對較短的XML文件,當由於DTD而擴展時,會消耗大量的RAM,從而使處理機器不堪重負。