Глядя на документацию предупреждения , объясняется основная причина и множество возможных исправлений, но сводится к тому, что читаемый XML-файл может содержать ссылки DTD на потенциально небезопасные места, а тщательно созданный документ может представлятьуязвимость.Из документов:
Если вы используете небезопасные экземпляры DtdProcessing или ссылаетесь на внешние источники данных, анализатор может принимать ненадежные входные данные и раскрывать конфиденциальную информацию злоумышленникам.
Проблема заключается вв том, что настройки по умолчанию обоих классов XmlReader и XmlReaderSettings допускают такое поведение.Так как по умолчанию возникает эта проблема, вам нужно явно установить безопасный параметр, который в конечном итоге сводится к установке DtdProcessing
на DtdProcessing.Prohibit
или XmlResolver
на XmlSecureResolver
.
Вернуться к вашему коду, его можно изменить следующим образом:
using (XmlReader xr = XmlReader.Create(fs, new XmlReaderSettings() { DtdProcessing = DtdProcessing.Prohibit }))
или
using (XmlReader xr = XmlReader.Create(fs, new XmlReaderSettings() { XmlResolver = new XmlSecureResolver() }))