Безопасность в Silverlight 2

ОГЛАВЛЕНИЕ

Для дальнейшего обсуждения тонкостей модели прозрачности будут полезны сведения об устройстве и функционировании системы безопасности CLR в рамках Microsoft .NET Framework. В CLR реализован механизм определения прав и возможностей кода, которые представлены разрешениями. Этот механизм основывается на информации о коде: откуда получен исполняемый код, подписан ли код цифровой подписью и, если да, то кому принадлежит эта подпись, и так далее. В результате коду, полученному из ненадежных источников, таких как Интернет, предоставляются меньшие привилегии, чем коду, полученному из надежных источников, например из папки «Program Files».

В CLR каждое управляемое приложение выполняется в своей собственной области приложений. Код из непроверенных источников лучше всего запускать в изолированной области приложений. В изолированных областях приложений код исполняется с правами «песочницы» — среды с ограниченными правами доступа, соответствующими не вполне надежному коду. В целом, изолированные области приложений делятся на две группы: области с полным доверием и области с частичным доверием. Далее в этом разделе я подробно опишу различия между этими двумя группами и причины, по которым они были выделены.

Чтобы облегчить реализацию и использование этой разделенной модели, в .NET Framework 2.0 был представлен так называемый «простой API песочницы». С помощью этого API для каждой области приложения можно задать «песочницу» со своим набором прав, а также задать список полностью проверенных сборок, не входящих в глобальный кэш сборок (GAC). Сборки, входящие в глобальный кэш сборок, уже считаются полностью проверенными. Все приложения, которые загружаются в такую область приложений и не входят в список полностью проверенных сборок, получают набор прав «песочницы». Если приложение запущено из Интернета, ему будет присвоен встроенный набор разрешений для Интернета.

В соответствии с обсуждаемой моделью, основное приложение (например, подключаемый модуль обозревателя) должно создать отдельную область приложения для каждого приложения, которое запускается под его управлением. Приложения будут загружены как частично проверенные и получат набор разрешений «песочницы». Основное приложение может также создать безопасную программу-оболочку для некоторых полностью проверенных управляемых приложений или системных функций и предоставить их в виде библиотек для приложений, работающих в обозревателе. Эти библиотеки будут находиться в списке полностью проверенных сборок. Например, обращение к файловой системе — это привилегированная операция, однако возможность сохранять информацию локально полезна, а при выполнении определенных условий (сохранять всегда в одно и то же место, никогда не исполнять код) — и безопасна. Обеспечить же безопасность этой функции может быть непросто.