Подтвердить что ты не робот

Что такое частично доверенная сборка/приложение/код/​​etc в .NET?

Может кто-нибудь объяснить? Я ничего не мог найти в Интернете, все говорит о том, как это сделать, но ничто не говорит точно, что это такое.

Кроме того, что такое полностью доверенная сборка и как они отличаются друг от друга?

У меня есть экзамен по сертификации MS, и это единственная тема, которую я просто не понимаю.

EDIT: Спасибо, ребята. Теперь у меня есть лучшее понимание безопасности в .NET. Я смог пройти сертификационный экзамен.

4b9b3361

Ответ 1

A сборка полного доверия имеет неограниченный набор code доступ к безопасности, который позволяет коду получать доступ ко всем типам ресурсов и выполнять привилегированные операции, подчиняясь только безопасности операционной системы. Например, если пользователь Боб не может получить доступ к файлу Y, то ни одна из них не может работать с полным доверием в пользовательском пространстве Боба.

A сборка частичного доверия означает, что код работает с полным доверием..NET Framework имеет несколько предопределенных уровней доверия, которые можно использовать напрямую или настраивать для удовлетворения ваших конкретных требований безопасности. Например, вы можете запретить сборке обращаться к базам данных SQL, отказав SQLClientPermission.

Уровень доверия сборки также может быть уменьшен по его происхождению. Например, код, поступающий с сетевого ресурса (в более старых версиях .NET), доверен меньше, чем код, поступающий с локального компьютера, и в результате ограничен его способностью выполнять привилегированные операции.

Ответ 2

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

Управляемый код должен предоставлять доказательства его происхождения; существуют различные способы сделать это (например, код подписан с определенным ключом, код загружен с определенного URL-адреса, код живет в определенном каталоге на диске и т.д.). Основываясь на этих доказательствах, собрания группируются в группы, для которых применяются политики. Политика может предоставлять определенные разрешения группе кода, прежде всего в отношении доступа к системным ресурсам (выполнение поиска DNS, открытие сетевых подключений, доступ к "изолированному хранилищу", доступ к локальной файловой системе (все это или только выбранные каталоги), доступ к реестр, доступ к сетевым ресурсам и т.д.). В панели управления есть инструмент, который позволяет вам определять такие политики.

Когда сборка пытается выполнить некоторую ограниченную операцию, выполняется проверка привилегий. Если доступ предоставляется, операция продолжается. Если проверка завершилась неудачей, генерируется исключение. Проверка обычно включает в себя обход стека (т.е. Все вызывающие должны быть доверены для этой операции), но есть исключения.

В качестве специального случая можно назначить сборку "Полное доверие", предоставляя все разрешения. Хотя раньше я не слышал термин "частичное доверие", я бы предположил, что это относится к ассамблеям, которые имеют некоторые права, но не к Full Trust.

Пожалуйста, поймите, что это всего лишь обзор - есть еще много чего сказать о безопасности доступа к коду.

Ответ 3

Может быть, какой-то контекст поможет.

Подумайте о чем-то вроде просмотра stackoverflow. Существует код от самого браузера, который может делать что-либо на вашем компьютере (например, удалять файлы), и есть код javascript сайта. Код javascript не может ничего сделать для вашего компьютера, кроме отличных эффектов затухания и некоторой другой магии дисплея.

.net имеет возможность обеспечить такое различие между локальным приложением и удаленными. Вы можете написать приложение, которое будет запускаться на локальном компьютере и сможет что-либо сделать на локальном компьютере. И это приложение может иметь функцию, которая загружает расширение dll из Интернета. Эти расширения смогут выполнять вычисления и манипулировать дисплеем. Но код внутри них хочет иметь возможность удалять файлы. Потому что ему не доверяют.

Детали ошибочны, но это идея (насколько я понимаю).