Бөлісу құралы:


CA3061: не добавляйте схему с помощью URL-адреса

Свойство Значение
Идентификатор правила CA3061
Заголовок Не добавлять схему через URL-адрес
Категория Безопасность
Исправление является критическим или не критическим неразрывный
Включен по умолчанию в .NET 10 Нет
Применимые языки C# и Visual Basic

Причина

Перегрузка метода XmlSchemaCollection.Add(String, String) использует XmlUrlResolver для указания внешней схемы XML в виде универсального кода ресурса (URI). Если строка URI испорчена, это может привести к синтаксическому анализу вредоносной схемы XML и включению бомб XML и вредоносных внешних объектов. В результате злоумышленник сможет осуществить атаку типа "отказ в обслуживании", раскрытие информации или подделку запросов на стороне сервера.

Описание правила

Не используйте небезопасную перегрузку метода Add, так как она может вызвать опасные внешние ссылки.

Устранение нарушений

  • Не используйте XmlSchemaCollection.Add(String, String).

Когда лучше отключить предупреждения

Отключите это правило, если вы уверены, что XML не содержит опасных внешних ссылок.

Отключение предупреждений

Если вы просто хотите отключить одно нарушение, добавьте директивы препроцессора в исходный файл, чтобы отключить и повторно включить правило.

#pragma warning disable CA3061
// The code that's violating the rule is on this line.
#pragma warning restore CA3061

Чтобы отключить правило для файла, папки или проекта, задайте его серьезность none в файле конфигурации.

[*.{cs,vb}]
dotnet_diagnostic.CA3061.severity = none

Дополнительные сведения см. в разделе Практическое руководство. Скрытие предупреждений анализа кода.

Примеры псевдокода

Нарушение

В приведенном ниже примере псевдокода показан шаблон, обнаруживаемый этим правилом. Тип второго параметра — string.

using System;
using System.Xml.Schema;
...
XmlSchemaCollection xsc = new XmlSchemaCollection();
xsc.Add("urn: bookstore - schema", "books.xsd");

Решение

using System;
using System.IO;
using System.Xml;
using System.Xml.Schema;
...
XmlSchemaCollection xsc = new XmlSchemaCollection();
xsc.Add("urn: bookstore - schema", new XmlTextReader(new FileStream(""xmlFilename"", FileMode.Open)));