Использование библиотек из не вполне надежного кода

ПримечаниеПримечание

Этот раздел описывает поведение строго именованных сборок и применяется только к сборкам уровня 1.На сборки Прозрачный с точки зрения безопасности код, уровень 2 в .NET Framework 4 или более поздних версий строгие имена не влияют.Дополнительные сведения об изменениях в системе безопасности см. в разделе Изменения системы безопасности в платформе .NET Framework 4.

Загружаемые из среды выполнения приложения, не получившие уровень полного доверия от узла или песочницы, не могут вызывать общие управляемые библиотеки, если это не было специально разрешено автором библиотеки путем указания атрибута AllowPartiallyTrustedCallersAttribute. Таким образом, авторы приложений должны иметь в виду, что некоторые библиотеки будут им недоступны в не вполне надежном контексте. По умолчанию весь код, выполняемый в частично доверенной песочнице и не входящий в список полностью доверенных приложений, является частично доверенным. Если предполагается, что код не будет запускаться из частично доверенного контекста или вызываться частично доверенным кодом, то информация, предлагаемая в этом разделе, не представляет интереса. Однако при написании кода, который должен взаимодействовать с не вполне надежным кодом или работать из не вполне надежного контекста, необходимо принимать во внимание следующие факторы.

  • Библиотеки должны подписываться строгим именем, чтобы совместно использоваться несколькими приложениями. Строгие имена допускают размещение кода в глобальном кэше сборок или добавление кода в список полного доверия домена AppDomain песочницы, а также позволяют потребителям удостоверяться, что данная часть мобильного кода действительно исходит от вас.

  • По умолчанию строго именованные совместно используемые библиотеки уровня 1 выполняют неявное требование LinkDemand для полного доверия автоматически, не требуя никаких действий от автора библиотеки.

  • Если вызывающий объект не является вполне надежным, но пытается вызывать такую библиотеку, среда выполнения создает исключение SecurityException и вызывающему объекту не разрешается связь с библиотекой.

  • Чтобы отключить автоматический вызов LinkDemand и предотвратить создание исключения, можно поместить атрибут AllowPartiallyTrustedCallersAttribute на уровне ограниченной области действия сборки совместно используемой библиотеки. Этот атрибут позволяет библиотекам вызываться из не вполне надежного управляемого кода.

  • Частично доверенный код, получающий доступ к библиотеке с помощью этого атрибута, остается подверженным остальным ограничениям, определяемым доменом AppDomain.

  • Программного способа, с помощью которого частично доверенный код мог бы вызвать библиотеку, не имеющую атрибута AllowPartiallyTrustedCallersAttribute, не существует.

Библиотеки, являющиеся собственными для определенного приложения, не требуют наличия строгого имени или атрибута AllowPartiallyTrustedCallersAttribute и не могут быть доступны по ссылке со стороны потенциально вредоносного кода извне приложения. Такой код защищен от преднамеренного или непреднамеренного использования не по назначению частично доверенным мобильным кодом, без дополнительных усилий со стороны разработчика.

Необходимо предусмотреть явное разрешение использования не вполне надежным кодом для следующих типов кода.

  • Код, который был тщательно проверен на уязвимые места безопасности и соответствует рекомендациям, приведенным в Правилах написания безопасного кода.

  • Строго именованные библиотеки, специально написанные для не вполне надежных сценариев.

  • Любые компоненты (частично или полностью доверенные), подписанные строгим именем, которые будут вызываться кодом, загружаемым из Интернета.

ПримечаниеПримечание

Некоторые классы из библиотеки классов .NET Framework, не имеют атрибута AllowPartiallyTrustedCallersAttribute и не могут вызываться из частично доверенного кода.Список классов, которые могут вызываться частично доверенным кодом, см. в разделе Сборки .NET Framework, отмеченные атрибутом AllowPartiallyTrustedCallersAttribute.

См. также

Основные понятия

Управление доступом для кода

Журнал изменений

Дата

Журнал

Причина

Июль 2010

Небольшие обновления содержимого.

Исправление ошибки содержимого.