Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
При использовании функций метаданных в Windows Communication Foundation (WCF) рассмотрите последствия для безопасности публикации, извлечения и использования метаданных службы.
Когда следует публиковать метаданные
Службы WCF по умолчанию не публикуют метаданные. Чтобы опубликовать метаданные для службы WCF, необходимо явно включить публикацию метаданных, добавив конечные точки метаданных в службу (см. раздел "Публикация метаданных"). После отключения публикации метаданных снижается область атаки для службы и снижается риск непреднамеренного раскрытия информации. Не все службы должны публиковать метаданные. Если вам не нужно публиковать метаданные, рекомендуется оставить его отключенным. Обратите внимание, что вы по-прежнему можете создавать метаданные и клиентский код непосредственно из сборок служб с помощью средства служебной программы метаданных ServiceModel (Svcutil.exe). Дополнительные сведения об использовании Svcutil.exe для экспорта метаданных см. в статье "Практическое руководство. Использование Svcutil.exe для экспорта метаданных из скомпилированного кода службы".
Публикация метаданных с помощью безопасной привязки
Привязки метаданных по умолчанию, которые предоставляет WCF, не защищены и разрешают анонимный доступ к метаданным. Метаданные службы, публикуемые службой WCF, содержат подробное описание службы и могут намеренно или непреднамеренно содержать конфиденциальную информацию. Например, метаданные службы могут содержать сведения об операциях инфраструктуры, которые не были предназначены для широкой трансляции. Чтобы защитить метаданные службы от несанкционированного доступа, можно использовать безопасную привязку для конечной точки метаданных. Конечные точки метаданных отвечают на запросы HTTP/GET, которые могут использовать протокол SSL для защиты метаданных. Дополнительные сведения см. в разделе "Практическое руководство. Защита конечных точек метаданных".
Защита конечных точек метаданных также позволяет запрашивающим безопасно извлекать метаданные службы без риска изменения или спуфингов.
Использование только доверенных метаданных
Метаданные службы можно использовать для автоматического создания компонентов времени выполнения, необходимых для вызова службы. Вы также можете использовать метаданные во время разработки для разработки клиентского приложения или во время выполнения для динамического обновления привязки, используемой клиентом для вызова службы.
Метаданные службы могут быть изменены или подделаны при получении небезопасным способом. Незаконно измененные метаданные могут перенаправить вашего клиента на вредоносный сервис, содержать скомпрометированные настройки безопасности или содержать вредоносные XML-структуры. Документы метаданных могут быть большими и часто сохраняются в файловой системе. Чтобы защититься от незаконного изменения и спуфингов, используйте безопасную привязку для запроса метаданных службы, когда он доступен.
Использование безопасных методов обработки метаданных
Метаданные службы часто извлекаются из службы по сети с помощью стандартных протоколов, таких как WS-MetadataExchange (MEX). Многие форматы метаданных включают механизмы ссылки на дополнительные метаданные. Тип MetadataExchangeClient автоматически обрабатывает ссылки для вас в документах языка описания веб-служб (WSDL), XML-схеме и документах MEX. Размер объекта, созданного из извлеченных метаданных, напрямую пропорционально MetadataSet значению MaximumResolvedReferences используемого MetadataExchangeClient экземпляра и MaxReceivedMessageSize
значению привязки, используемой этим MetadataExchangeClient экземпляром. Задайте эти квоты соответствующим значениям в соответствии с вашим сценарием.
В WCF метаданные службы обрабатываются как XML. При обработке XML-документов приложения должны защищать себя от вредоносных структур XML. XmlDictionaryReader Используйте соответствующие кавычки при обработке XML, а также задайте свойству DtdProcessing значение Prohibit.
Система метаданных в WCF расширяема, а расширения метаданных можно зарегистрировать в файле конфигурации приложения (см. расширение системы метаданных). Расширения метаданных могут выполнять произвольный код, поэтому необходимо защитить файл конфигурации приложения с соответствующими списками управления доступом (ACL) и зарегистрировать только реализации доверенных расширений метаданных.
Проверка созданных клиентов
При создании клиентского кода из метаданных, полученных из источника, который не является доверенным, проверьте созданный клиентский код, чтобы убедиться, что созданный клиент соответствует политикам безопасности клиентских приложений. Для проверки параметров привязки клиента или визуальной проверки кода, созданного инструментами, можно использовать механизм проверки. Пример реализации клиента, проверяющего поведение, см. в разделе "Проверка клиента".
Защита файлов конфигурации приложения
Файл конфигурации приложения службы может управлять тем, как и если метаданные публикуются. Рекомендуется защитить файл конфигурации приложения с соответствующими списками управления доступом (ACL), чтобы гарантировать, что злоумышленник не может изменять такие параметры.