Изолированные программные среды

Flash Player 9 и более поздних версий, Adobe AIR 1.0 и более поздних версий

Клиентские компьютеры могут получать отдельные файлы, содержащие код, содержимое и данные, из ряда источников, включая внешние веб-сайты, локальную файловую систему или установленное приложение AIR. Среда выполнения Flash Player или AIR в индивидуальном порядке распределяет файлы с кодами и другие ресурсы, такие как общие объекты, растровые изображения, звуки, видео и данные, по изолированным программным средам безопасности на основе того, из каких источников они загружены. В следующих разделах описываются правила, предусмотренные в средах выполнения для управления тем, какие ресурсы доступны коду или содержимому в определенной изолированной программной среде.

Дополнительные сведения о безопасности проигрывателя Flash Player см. в центре разработчиков Flash Player Developer Center в разделе «Безопасность» по адресу www.adobe.com/go/devnet_security_ru .

Удаленные изолированные программные среды

Среды выполнения Flash Player и AIR классифицируют ресурсы, получаемые из Интернета (включая SWF-файлы), и помещают их в разные изолированные программные среды в соответствии с их исходными доменами. Например, ресурсы, загруженные с домена example.com и с домена foo.org будут помещены в разные изолированные программные среды безопасности. По умолчанию этим файлам разрешен доступ к любым ресурсам, находящимся в их домене. Удаленным SWF-файлам можно разрешить доступ к данным в других доменах путем предоставления разрешения от веб-сайта или автора, например, с помощью файлов политики URL-адресов и метода Security.allowDomain() . Дополнительные сведения см. в разделах « Элементы управления веб-сайта (файлы политики) » и « Элементы управления автора (разработчика) ».

Удаленные SWF-файлы не могут загружать локальные файлы или ресурсы.

Дополнительные сведения о безопасности проигрывателя Flash Player см. в центре разработчиков Flash Player Developer Center в разделе «Безопасность» по адресу www.adobe.com/go/devnet_security_ru .

Локальные изолированные программные среды

Локальным называется любой файл, который указывается с использованием ссылки по протоколу file: или пути UNC (Universal Naming Convention — универсальные правила именования). Локальные SWF-файлы помещаются в одну из четырех локальных изолированных программных сред.

  • Локальная изолированная программная среда файловой системы: в целях безопасности среды выполнения Flash Player и AIR по умолчанию помещают в нее все локальные файлы. Исполняемый код из этой изолированной программной среды может считывать локальные файлы (например, с помощью класса URLLoader), но не имеет никакой возможности взаимодействовать с сетью. Это предотвращает утечку локальных данных в сеть и другие виды несанкционированного доступа.

  • Локальная изолированная программная среда с сетевым подключением: во время компиляции SWF-файла можно указать, что он имеет доступ к сети, когда выполняется в качестве локального файла (см. раздел Настройка типа изолированной программной среды для локальных SWF-файлов ). Такие файлы помещаются в локальную изолированную программную среду с сетевым подключением. SWF-файлы, помещенные в локальную изолированную программную среду с сетевым подключением, теряют доступ к локальным файлам. Зато они получают доступ к сетевым данным. Однако SWF-файлы из локальной изолированной программной среды с сетевым подключением все равно не могут считывать данные из сети, если им не предоставлено соответствующее разрешение посредством файла политики URL-адресов или вызова метода Security.allowDomain() . Чтобы предоставить такое разрешение, файл политики URL-адресов должен разрешать доступ всем доменам с использованием оператора <allow-access-from domain="*"/> или метода Security.allowDomain("*") . Дополнительные сведения см. в разделах « Элементы управления веб-сайта (файлы политики) » и « Элементы управления автора (разработчика) ».

  • Локальная доверенная изолированная программная среда: в эту среду помещаются локальные SWF-файлы, зарегистрированные в качестве доверенных (пользователями или программами установки). Системные администраторы и пользователи также имеют возможность перераспределять (перемещать) локальные SWF-файлы в локальную доверенную изолированную программную среду или из нее в соответствии с требованиями безопасности (см. разделы « Элементы управления администратора » и « Элементы управления пользователя )». SWF-файлы, распределенные в локальную доверенную изолированную программную среду, могут взаимодействовать со всеми остальными SWF-файлами и загружать данные из любого местоположения (удаленного или локального).

  • Изолированная программная среда приложения AIR: эта изолированная программная среда включает содержимое, установленное вместе с выполняемым приложением AIR. По умолчанию код, выполняемый в изолированной программной среде приложения AIR может выполнять перекрестные сценарии для кода из любого домена. Однако файлы, находящиеся за пределами изолированной программной среды приложения AIR, не могут выполнять перекрестные сценарии для находящегося внутри нее кода. По умолчанию код и содержимое в изолированной программной среде приложения AIR могут загружать содержимое и данные из любого домена.

Взаимодействие между локальной изолированной программной средой с сетевым подключением и локальной изолированной программной средой файловой системы, а также между локальной изолированной программной средой файловой системы и удаленной изолированной программной средой строго запрещено. Разрешение на такое взаимодействие не может предоставить ни приложение, выполняемое в проигрывателе Flash Player, ни пользователь, ни администратор.

Для выполнения сценариев в любом направлении между локальными HTML-файлами и локальными SWF-файлами, например, с помощью класса ExternalInterface, требуется, чтобы оба файла (HTML и SWF) находились в локальной доверенной изолированной программной среде. Это требование объясняется тем, что локальные модели безопасности обозревателей отличаются от модели проигрывателя Flash Player.

SWF-файлы из локальной изолированной программной среды с сетевым подключением не могут загружать SWF-файлы из локальной изолированной программной среды файловой системы. SWF-файлы из локальной изолированной программной среды файловой системы не могут загружать SWF-файлы из локальной изолированной программной среды с сетевым подключением.

Изолированная программная среда приложения AIR

Среда выполнения Adobe AIR добавляет дополнительную изолированную среду приложения , которая расширяет модель изолированных программных сред безопасности Flash Player. Файлы, устанавливаемые в составе приложения AIR, загружаются в изолированную программную среду приложения. Все остальные файлы, загружаемые приложением, имеют те же ограничения по безопасности, которые определены в обычной модели безопасности Flash Player.

При установке приложения все файлы, включенные в пакет AIR, устанавливаются на компьютер пользователя в каталог приложения. Разработчики могут обратиться к этому каталогу в коде с использованием схемы URL app:/ (см. раздел « Схемы URI »). Все файлы дерева каталога приложения помещаются в изолированную программную среду приложения при выполнении приложения. Содержимое изолированной программной среды приложения наделяется полным набором привилегий, доступных приложению AIR, в том числе возможностью взаимодействия с локальной файловой системой.

Многие приложения AIR используют только такие локально установленные файлы для выполнения приложения. Однако приложения AIR не ограничены файлами в каталоге приложения — они могут загружать файлы любого типа из любых источников. К ним относятся файлы, локально установленные на компьютере пользователя, а также файлы из доступных внешних источников, например из локальной сети или Интернета. Тип файла не влияет на ограничения безопасности; загруженные HTML-файлы обладают теми же привилегиями безопасности, что и загруженные SWF-файлы из того же источника.

Содержимое изолированной программной среды безопасности приложения имеет доступ к API-интерфейсам AIR, к которым содержимое из других изолированных программных сред не имеет доступа. Например, свойство air.NativeApplication.nativeApplication.applicationDescriptor , которое возвращает содержимое файла дескриптора приложения, ограничено доступом к содержимому в изолированной программной среде безопасности приложения. Другим примером API-интерфейса с ограниченным доступом является класс FileStream, который содержит методы для чтения и записи в локальную файловую систему.

API-интерфейсы ActionScript, которые доступны только для содержимого в изолированной программной среде безопасности приложения, отмечены логотипом AIR в cправочнике ActionScript® 3.0 для платформы Adobe® Flash® Platform . При использовании этих API-интерфейсов в других изолированных программных средах среда выполнения выдает исключение SecurityError.

Для содержимого HTML (в объекте HTMLLoader) все JavaScript API-интерфейсы AIR (которые доступны через свойство window.runtime или объект air при использовании файла AIRAliases.js) доступны для содержимого в изолированной программной среде безопасности приложения. Содержимое HTML в другой изолированной программной среде не имеет доступа к свойству window.runtime , поэтому такое содержимое не имеет доступа к API-интерфейсам Flash Player.

Содержимое, выполняемое в изолированной программной среде приложения AIR, имеет следующие дополнительные ограничения.

  • Содержимое HTML в изолированной программной среде безопасности приложения имеет ограничения по использованию API-интерфейсов, которые могут динамически преобразовывать строки в исполняемый код после загрузки кода. Это предотвращает случайный ввод (и исполнение) приложением кода из источников, не относящихся к приложению (например, из потенциально небезопасных сетевых доменов). Примером может служить использование функции eval() . Дополнительные сведения см. в разделе « Ограничения по использованию кода в содержимом из различных изолированных программных сред ».

  • Для предотвращения возможных информационных атак теги img в содержимом HTML объектов TextField в ActionScript игнорируются содержимым SWF, находящимся в изолированной программной среде безопасности приложения.

  • Содержимое в изолированной программной среде приложения не может использовать протокол asfunction в содержимом HTML текстовых полей ActionScript 2.0.

  • Содержимое SWF в изолированной программной среде приложения не может использовать междоменный кэш — функцию, добавленную в Flash Player 9 Пакет обновлений 3. Эта функция позволяет проигрывателю Flash Player постоянно кэшировать содержимое компонента платформы Adobe и использовать его в содержимом SWF по запросу (исключая необходимость многократной повторной загрузки содержимого).

Ограничения для JavaScript внутри AIR

В отличие от содержимого в изолированной программной среде безопасности приложения содержимое JavaScript из других изолированных программных сред безопасности может вызвать функцию eval() для исполнения динамически генерируемого кода в любое время. Однако существуют ограничения для сценариев JavaScript, выполняемых за пределами изолированной программной среды приложения AIR. Вот некоторые из них:

  • Код JavaScript в изолированной программной среде безопасности, отличной от изолированной программной среды приложения, не имеет доступа к объекту window.runtime , поэтому не может исполнять API-интерфейсы AIR.

  • По умолчанию содержимое в изолированной программной среде, отличной от изолированной программной среды приложения, не может вызывать XMLHttpRequest для загрузки данных из доменов, отличных от домена, вызывающего запрос. Однако код приложения может предоставить содержимому, не имеющему отношения к приложению, такую возможность, задав атрибут allowCrossdomainXHR в кадре-контейнере или во встроенном кадре. Дополнительные сведения см. в разделе « Ограничения по использованию кода в содержимом из различных изолированных программных сред ».

  • Существуют ограничения по вызову метода JavaScript window.open() . Дополнительные сведения см. в разделе « Ограничения по вызову метода JavaScript window.open() ».

  • Содержимое HTML в изолированных программных средах безопасности remote (сетевых) может загружать содержимое CSS, frame , iframe и img только из удаленных доменов (с сетевых URL-адресов).

  • Содержимое HTML в локальной изолированной программной среде файловой системы, локальной изолированной программной среде с сетевым подключением или в локальной доверенной изолированной программной средае может загружать содержимое CSS, frame , iframe и img только из локальных изолированных программных сред (не с сетевых и программных URL-адресов).

Дополнительные сведения см. в разделе « Ограничения по использованию кода в содержимом из различных изолированных программных сред ».

Настройка типа изолированной программной среды для локальных SWF-файлов

Конечный пользователь или администратор компьютера может указать локальный SWF-файл как доверенный, чтобы он мог загружать данные из всех доменов, локальных и сетевых. Это указывается в каталоге глобальной доверенной зоны Global Flash Player Trust и в каталоге пользовательской доверенной зоны User Flash Player Trust. Дополнительные сведения см. в разделах « Элементы управления администратора » и « Элементы управления пользователя ».

Дополнительные сведения о локальных изолированных программных средах см. в разделе « Локальные изолированные программные среды ».

Adobe Flash Professional

Чтобы настроить SWF-файл для локальной изолированной программной среды файловой системы или для локальной изолированной программной среды с сетевым подключением, нужно настроить параметры публикации документа в инструменте разработки.

Adobe Flex

Чтобы настроить SWF-файл для локальной изолированной программной среды файловой системы или для локальной изолированной программной среды с сетевым подключением, нужно установить флаг use-network в компиляторе Adobe Flex. Дополнительные сведения см. в разделе «О параметрах компилятора приложений» руководства Создание и развертывание приложений Adobe Flex 3 .

Свойство Security.sandboxType

Автор SWF-файла может использовать статическое свойство Security.sandboxType , предназначенное только для чтения, чтобы определить тип изолированной программной среды, в которую среда выполнения Flash Player или AIR поместила SWF-файл. Класс Security включает константы, представляющие возможные значения свойства Security.sandboxType , перечисленные ниже.

  • Security.REMOTE : SWF-файл находится в удаленном местоположении в Интернете и подчиняется правилам изолированной программной среды на основе домена.

  • Security.LOCAL_WITH_FILE : SWF-файл является локальным файлом, но не является доверенным для пользователя и не публиковался с возможностью сетевого подключения. SWF-файл может считывать информацию из локальных источников данных, но не может обмениваться данными через Интернет.

  • Security.LOCAL_WITH_NETWORK : SWF-файл является локальным файлом, не является доверенным для пользователя, но публиковался с возможностью сетевого подключения. SWF-файл может обмениваться данными через Интернет, но не может считывать информацию из локальных источников данных.

  • Security.LOCAL_TRUSTED : SWF-файл является локальным файлом, пользователь сделал его доверенным с помощью диспетчера настроек проигрывателя или файла конфигурации доверия Flash Player. SWF-файл может считывать информацию из локальных источников данных и обмениваться данными через Интернет.

  • Security.APPLICATION : SWF-файл работает в приложении AIR и был установлен с пакетом (файлом AIR) для этого приложения. По умолчанию файлы в изолированной программной среде приложения AIR могут выполнять перекрестные сценарии для любого файла из любого домена. Однако файлы, находящиеся за пределами изолированной программной среды приложения AIR, не могут выполнять перекрестные сценарии для файла AIR. По умолчанию файлы в изолированной программной среде приложения AIR могут загружать содержимое и данные из любого домена.