Безопасность доступа по коду

редактировать

Безопасность доступа по коду (CAS) в среде Microsoft.NET составляет Решение Microsoft для предотвращения выполнения привилегированных действий ненадежным кодом. Когда CLR загружает сборку, он получает свидетельство для сборки и использует его для идентификации группы кода, к которой принадлежит сборка.. Группа кода содержит набор разрешений (одно или несколько разрешений ). Код, выполняющий привилегированное действие, выполнит код доступа require, который заставит CLR пройти вверх по стеку вызовов и проверить набор разрешений, предоставленных сборке каждого метода . в стеке вызовов. Группы кода и наборы разрешений определяются администратором компьютера, который определяет политику безопасности.

Содержание
  • 1 Свидетельство
  • 2 Политика
  • 3 Группа кода
  • 4 Требования
  • 5 Ссылки
Свидетельство

Свидетельством может быть любая информация, связанная со сборкой. По умолчанию для защиты доступа к коду.NET используются следующие свидетельства:

  • Каталог приложения: каталог, в котором находится сборка.
  • Издатель: цифровая подпись издателя сборки (требуется, чтобы сборка была подписана через Authenticode ).
  • URL-адрес : полный URL-адрес, по которому сборка была запущена с
  • Сайт: имя хоста URL-адреса / удаленного домена / VPN.
  • Зона: зона безопасности где находится сборка
  • Hash : криптографический хеш сборки, который идентифицирует конкретную версию.
  • Strong Name: комбинация имени сборки, версии и открытого ключа используемого ключа подписи для подписи сборки. Ключ подписи - это не сертификат X509, а настраиваемая пара ключей, созданная с помощью инструмента строгого именования, SN.EXE или Visual Studio.

Разработчик может использовать настраиваемое свидетельство (так называемое свидетельство сборки) но это требует написания сборки безопасности, а в версии 1.1.NET эта возможность не работает.

Доказательства на основе хэша сборки mbly легко получить в коде. Например, в C # свидетельство может быть получено с помощью следующего предложения кода:

this.GetType (). Assembly.Evidence
Политика

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

  • Enterprise: политика для семейства машин, которые являются частью установки Active Directory.
  • Machine: политика для текущего компьютера.
  • Пользователь: политика для вошедшего в систему пользователя.
  • AppDomain: политика для домена исполняющего приложения.

Первые три политики хранятся в файлах XML и администрируются через Инструмент настройки.NET 1.1 (mscorcfg.msc). Окончательная политика администрируется с помощью кода для текущего домена приложения.

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

По умолчанию политики Enterprise, User и AppDomain предоставляют полное доверие (то есть они позволяют всем сборкам иметь все разрешения), а политика Machine является более строгой. Поскольку пересечение взято, это означает, что окончательный набор разрешений определяется политикой компьютера.

Обратите внимание, что в.NET Framework 4.0 система политик исключена.

Группа кода

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

Требует

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

Ссылки
Последняя правка сделана 2021-05-15 13:37:54
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте