Skip to main content
Перейти к основному контенту
Hardware Dev Center
Using Libraries from Partially Trusted Code
 
System_CAPS_ICON_note.jpg Примечание

Этот раздел описывает поведение сборок со строгими именами и применяется только к сборкам уровня 1. Сборки Security-Transparent Code, Level 2 в .NET Framework 4 или более поздних версий не зависят от строгих имен. Дополнительные сведения об изменениях системы безопасности см. в разделе Изменения системы безопасности.

System_CAPS_ICON_caution.jpg Внимание!

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

Платформа .NET Framework предоставляет механизм для принудительного применения различных уровней доверия к разным частям кода, выполняемым в одном и том же приложении. Этот механизм называется управлением доступом для кода. Управление доступом для кода в .NET Framework не следует использовать в качестве средства безопасности при работе с частично доверенным кодом, особенно кодом неизвестного происхождения. Мы не рекомендуем загружать и выполнять код из неизвестных источников, не предприняв дополнительные меры безопасности.

Эта политика действует в отношении всех версий платформы .NET Framework, кроме платформы .NET Framework в составе Silverlight.

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

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

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

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

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

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

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

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

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

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

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

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

System_CAPS_ICON_note.jpg Примечание

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

Code Access Security