Введение

Code Access Security (CAS) в Microsoft .NET Framework — это решение Microsoft для предотвращения выполнения привилегированных действий ненадежным кодом. При загрузке сборки CLR получает информацию о ней (доказательства) и использует её для определения группы кодов, к которой сборка относится. Группа кодов содержит набор разрешений (одно или несколько разрешений). Код, выполняющий привилегированное действие, генерирует запрос на доступ к коду, что заставляет CLR просматривать стек вызовов и проверять набор разрешений, предоставленных сборке каждого метода в этом стеке. Группы кодов и наборы разрешений определяются администратором компьютера, который задает политику безопасности. Microsoft считает CAS устаревшим и не рекомендует его использовать. Он также отсутствует в .NET Core и .NET.

Политика

Политика — это набор выражений, использующих доказательства для определения принадлежности к группе кода. Группа кода предоставляет набор разрешений для сборок, входящих в эту группу. В .NET существует четыре политики:

Enterprise: политика для семейства машин, являющихся частью установки Active Directory. Machine: политика для текущей машины. User: политика для вошедшего в систему пользователя. AppDomain: политика для текующего домена приложения. Первые три политики хранятся в XML-файлах и управляются с помощью инструмента конфигурации .NET 1.1 (mscorcfg.msc). Последняя политика управляется посредством кода для текущего домена приложения. Система безопасности кода предоставляет доказательства сборки каждой политике, а затем использует пересечение (то есть разрешения, общие для всех сгенерированных наборов разрешений) в качестве разрешений, предоставляемых сборке. По умолчанию политики Enterprise, User и AppDomain предоставляют полное доверие (то есть разрешают всем сборкам иметь все разрешения), а политика Machine является более ограничительной. Поскольку используется пересечение, окончательный набор разрешений определяется политикой Machine. Обратите внимание, что система политик была упразднена в .NET Framework 4.0.

Кодовая группа

Кодовые группы связывают фрагмент доказательств с именованным набором разрешений. Администратор использует инструмент конфигурации .NET для указания конкретного типа доказательств (например, Сайт) и конкретного значения для этих доказательств (например, www.mysite.com), а затем определяет набор разрешений, который будет предоставлен кодовой группе.

Требования

Код, выполняющий привилегированное действие, запрашивает одно или несколько разрешений. Этот запрос заставляет CLR просматривать стек вызовов, и для каждого метода CLR проверяет, включены ли запрошенные разрешения в разрешения, предоставленные сборке этого метода. Если разрешение не предоставлено, генерируется исключение безопасности. Это предотвращает выполнение привилегированных действий загруженным кодом. Например, если сборка загружена с ненадежного источника, она не будет иметь разрешений на ввод-вывод файлов, и поэтому при попытке доступа к файлу будет выброшено исключение, блокирующее этот вызов.