Безопасность доступа по коду (CAS) в среде Microsoft.NET составляет Решение Microsoft для предотвращения выполнения привилегированных действий ненадежным кодом. Когда CLR загружает сборку, он получает свидетельство для сборки и использует его для идентификации группы кода, к которой принадлежит сборка.. Группа кода содержит набор разрешений (одно или несколько разрешений ). Код, выполняющий привилегированное действие, выполнит код доступа require, который заставит CLR пройти вверх по стеку вызовов и проверить набор разрешений, предоставленных сборке каждого метода . в стеке вызовов. Группы кода и наборы разрешений определяются администратором компьютера, который определяет политику безопасности.
Свидетельством может быть любая информация, связанная со сборкой. По умолчанию для защиты доступа к коду.NET используются следующие свидетельства:
Разработчик может использовать настраиваемое свидетельство (так называемое свидетельство сборки) но это требует написания сборки безопасности, а в версии 1.1.NET эта возможность не работает.
Доказательства на основе хэша сборки mbly легко получить в коде. Например, в C # свидетельство может быть получено с помощью следующего предложения кода:
this.GetType (). Assembly.Evidence
Политика - это набор выражения, использующие свидетельства для определения членства в группе кода. Группа кода предоставляет набор разрешений для сборок в этой группе. В.NET есть четыре политики:
Первые три политики хранятся в файлах XML и администрируются через Инструмент настройки.NET 1.1 (mscorcfg.msc). Окончательная политика администрируется с помощью кода для текущего домена приложения.
Безопасность доступа кода будет представлять свидетельство сборки для каждой политики, а затем будет принимать пересечение (то есть разрешения, общие для всего сгенерированного набора разрешений) в качестве разрешений, предоставленных сборке.
По умолчанию политики Enterprise, User и AppDomain предоставляют полное доверие (то есть они позволяют всем сборкам иметь все разрешения), а политика Machine является более строгой. Поскольку пересечение взято, это означает, что окончательный набор разрешений определяется политикой компьютера.
Обратите внимание, что в.NET Framework 4.0 система политик исключена.
Группы кода связывают часть свидетельства с именованным набором разрешений. Администратор использует.NET Configuration Tool, чтобы указать конкретный тип свидетельства (например, сайт) и конкретное значение для этого свидетельства (например, www.mysite.com), а затем определяет набор разрешений, который будет использоваться группой кода. предоставляется.
Код, выполняющий какое-либо привилегированное действие, потребует одного или нескольких разрешений. Требование заставляет CLR обходить стек вызовов, и для каждого метода среда CLR будет гарантировать, что требуемые разрешения находятся в предоставленных разрешениях сборки метода. Если разрешение не предоставлено, генерируется исключение безопасности . Это не позволяет загруженному коду выполнять привилегированные действия. Например, если сборка загружается с ненадежного сайта, сборка не будет иметь никаких разрешений на ввод-вывод файла, и поэтому, если эта сборка попытается получить доступ к файловому коду, безопасность доступа вызовет исключение, предотвращающее вызов.