Основы управления доступом для кода
Обновлен: Ноябрь 2007
Каждое приложение, нацеленное на среду CLR, должно взаимодействовать с ее системой безопасности. Когда приложение запускается, оно автоматически оценивается и получает набор разрешений от среды выполнения. В зависимости от разрешений, которые получает приложение, оно либо запускается, либо вызывает исключение безопасности. Локальные параметры безопасности на конкретном компьютере окончательно определяют, какие разрешения получит код. Так как эти параметры могут различаться на разных компьютерах, никогда нельзя быть уверенным, что код получит достаточные разрешения для выполнения. Это важное отличие от сред неуправляемой разработки, когда нет необходимости беспокоиться о разрешениях на выполнение кода.
Каждый разработчик должен быть знаком со следующими принципами управления доступом для кода, чтобы писать эффективные приложения, нацеленные на среду CLR.
Написание строго типизированного кода. Чтобы иметь возможность пользоваться преимуществами управления доступом для кода, необходимо использовать компилятор, создающий проверяемый строго типизированный код. Дополнительные сведения см. в разделе Написание проверяемого строго типизированного кода.
Принудительный и декларативный синтаксис. Взаимодействие с системой безопасности среды выполнения происходит с использованием принудительных и декларативных вызовов безопасности. Декларативные вызовы выполняются с использованием атрибутов; принудительные вызовы выполняются с использованием новых экземпляров классов в вашем коде. Некоторые вызовы могут выполняться только принудительно, в то время как другие могут выполняться только декларативно. Некоторые вызовы могут выполняться любым из способов. Дополнительные сведения см. в разделе Синтаксис безопасности.
Запрос разрешений для кода. Запросы применяются к ограниченной области действия сборки, где код информирует среду выполнения о разрешениях, которые ему необходимы для выполнения или же явно не нужны. Запросы безопасности оцениваются средой выполнения, когда код загружается в память. Запросы не могут влиять на среду выполнения с целью дать коду больше разрешений, чем среда выдала бы коду без этого запроса. Тем не менее, именно запросы код использует для того, чтобы сообщить среде выполнения о разрешениях, которые необходимы ему для запуска. Дополнительные сведения см. в разделе Запрос разрешений.
Использование безопасных библиотек классов. Библиотеки классов используют управление доступом для кода для указания разрешений, которые им требуются, чтобы предоставлять к себе доступ. Необходимо учитывать разрешения, требуемые для доступа к любой библиотеке, используемой кодом, и делать необходимые запросы в коде. Дополнительные сведения см. в разделе Использование безопасных библиотек классов.
См. также
Основные понятия
Написание проверяемого строго типизированного кода
Использование безопасных библиотек классов