.NET: Какова цель свойства ProhibitDtd в XmlReaderSettings? Почему DTD является проблемой безопасности? - PullRequest
3 голосов
/ 01 апреля 2010

В документации написано:

Если установлено значение true, XmlReader генерирует исключение XmlException при обнаружении любого содержимого DTD. Не включайте обработку DTD, если вы обеспокоены проблемами отказа в обслуживании или имеете дело с ненадежными источниками.

Если у вас включена обработка DTD, вы можете использовать XmlSecureResolver, чтобы ограничить ресурсы, к которым может обращаться XmlReader. Вы также можете спроектировать свое приложение так, чтобы обработка XML ограничивала память и время. Например, настройте ограничения времени ожидания в приложении ASP.NET.

Может кто-нибудь объяснить проблему?

Почему приложение считывателя хотело бы запретить получение DTD? Где проблема отказа в обслуживании, если это приложение для чтения? Что такое проблема доверия?

Спасибо

1 Ответ

3 голосов
/ 01 апреля 2010

Взгляните на MSDN Magazine , который объясняет атаку, связанную с DTD. Таким образом, можно создать относительно короткий XML-файл, который при расширении из-за DTD потребляет много МБ ОЗУ, из-за чего процессор не работает.

...