Jump to content

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

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

Доказательство

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

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

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

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

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

this.GetType().Assembly.Evidence

Политика

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

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

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

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

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

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

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

Группа кодов

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

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

Требования

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

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

Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 9da0983cb76a8142aac6cd766191d898__1671616380
URL1:https://arc.ask3.ru/arc/aa/9d/98/9da0983cb76a8142aac6cd766191d898.html
Заголовок, (Title) документа по адресу, URL1:
Code Access Security - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)