Как правило, содержимое из одних доменов не может выполнять сценарии в других доменах. Для защиты приложений AIR от случайной утечки конфиденциальной информации или перехвата управления на содержимое в изолированной программной среде
application
(содержимое, установленное с приложением) накладываются следующие ограничения:
-
Код в изолированной программной среде приложения не может предоставить доступ другим изолированным средам путем вызова метода
Security.allowDomain()
. При вызове этого метода из защищенной изолированной программной среды приложения происходит ошибка.
-
Импорт непрограммного содержимого в изолированную программную среду приложения путем задания свойства
LoaderContext.securityDomain
или
LoaderContext.applicationDomain
запрещен.
Бывают случаи, когда главному приложению AIR требуется, чтобы содержимое с удаленного домена имело управляемый доступ к сценариям в главном приложении AIR, или наоборот. Для этого среда выполнения создает
мост изолированной программной среды
, который служит шлюзом между двумя изолированными программными средами. Мост изолированной программной среды обеспечивает открытое взаимодействие между изолированной программной средой remote и изолированной программной средой приложения.
Мост изолированной программной среды предоставляет два объекта, доступ к которым имеет и загруженный, и загружаемый сценарий.
-
Объект
parentSandboxBridge
позволяет загружаемому содержимому предоставить сценариям загруженного содержимого доступ к свойствам и функциям.
-
Объект
childSandboxBridge
позволяет загруженному содержимому предоставить сценариям загружаемого содержимого доступ к свойствам и функциям.
Объекты, доступ к которым предоставлен при помощи моста изолированной программной среды, передаются по значению, а не по ссылке. Все данные сериализуются. Это значит, что объекты, предоставленные одной стороной моста, не могут быть заданы другой стороной, и что все предоставленные объекты нетипизированные. Более того, предоставлять доступ можно только к простым объектам и функциям, а не к сложным.
Если дочернее содержимое пытается задать объект в качестве parentSandboxBridge, среда выполнения выдает исключение SecurityError. Таким же образом, если родительское содержимое пытается задать объект в качестве childSandboxBridge, среда выполнения выдает исключение SecurityError.