Модель безопасности, используемая в средах выполнения Flash Player и AIR, главным образом основана на исходном домене для загружаемых SWF-файлов, HTML, медиасодержимого и других ресурсов. Исполняемый код в файле с определенного интернет-домена, например www.example.com, может в любой момент получить доступ ко всем данным в этом домене. Эти ресурсы помещаются в одну группу безопасности, которая называется
изолированной программной средой
. (Дополнительные сведения см. в разделе «
Изолированные программные среды
».)
Например, код ActionScript в SWF-файле может загружать SWF-файлы, растровые изображения, аудио, текстовые файлы и другие ресурсы из своего домена. Кроме того, разрешается перекрестное выполнение сценариев между двумя SWF-файлами из одного домена, если они созданы с использованием ActionScript 3.0.
Перекрестное выполнение сценариев
— это способность кода в одном файле получать доступ к свойствам, методам и объектам, определенным кодом другого файла.
Перекрестное выполнение сценариев не поддерживается между файлами, созданными с помощью ActionScript 3.0, и файлами, использующими предыдущие версии ActionScript. Однако эти файлы могут взаимодействовать с помощью класса LocalConnection. Кроме того, по умолчанию запрещено перекрестное выполнение сценариев между SWF-файлами версии ActionScript 3.0, находящимися в разных доменах. Однако такой доступ можно разрешить, вызвав метод
Security.allowDomain()
в загруженном SWF-файле. Дополнительные сведения см. в разделе «
Перекрестное выполнение сценариев
».
Ниже перечислены основные правила безопасности, которые всегда применяются по умолчанию.
-
Ресурсы, находящиеся в одной изолированной программной среде, всегда могут обращаться друг к другу.
-
Исполняемые файлы из удаленной изолированной программной среды никогда не могут обращаться к локальным файлам и данным.
Среды выполнения Flash Player и AIR рассматривают следующие узлы как отдельные домены и создают для каждого из них отдельные изолированные среды безопасности:
-
http://example.com
-
http://www.example.com
-
http://store.example.com
-
https://www.example.com
-
http://192.0.34.166
Даже если домен с именем, например http://example.com, соответствует определенному IP-адресу, например http://192.0.34.166, среда выполнения создает для них отдельные изолированные программные среды.
Существует два основных способа, которые разработчик может использовать для предоставления SWF-файлу доступа к ресурсам из других изолированных программных сред:
В модели безопасности среды выполнения Flash Player или AIR проводится различие между загрузкой содержимого и извлечением или получением данных.
Содержимое
— это мультимедийное содержимое, включая визуальное содержимое, которое можно отобразить в среде выполнения, аудио, видео, а также SWF-файл или HTML с отображаемым мультимедийным содержимым.
Данные
— это то, что доступно только для кода Содержимое и данные загружаются по-разному.
-
Загрузка содержимого осуществляется с помощью таких классов, как Loader, Sound и NetStream; с помощью тегов MXML при использовании Flex; или с помощью тегов HTML в приложении AIR.
-
Извлечение данных осуществляется из загруженного мультимедийного содержимого с помощью объектов Bitmap, методов
BitmapData.draw()
и
BitmapData.drawWithQuality()
, свойства
Sound.id3
или метода
SoundMixer.computeSpectrum()
. Метод
drawWithQuality
доступен в средах Flash Player 11.3 и AIR 3.3 и более поздних версий.
-
Получение данных осуществляется напрямую посредством загрузки из внешнего файла (например, XML-файла) с помощью таких классов, как URLStream, URLLoader, FileReference, Socket и XMLSocket. В AIR предусмотрены дополнительные классы для загрузки данных, такие как FileStream и XMLHttpRequest.
Модель безопасности проигрывателя Flash Player определяет разные правила для загрузки содержимого и получения данных. В общем, для загрузки содержимого предусмотрено меньше ограничений, чем для получения данных.
Как правило, содержимое (SWF-файлы, растровые изображения, mp3-файлы и видео) можно загружать из любого местоположения, однако если оно находится не в том домене, что загружающий его код или содержимое, оно будет помещено в другую изолированную программную среду.
Существует лишь несколько препятствий для загрузки содержимого.
-
По умолчанию локальные SWF-файлы (то есть загруженные с несетевого адреса, например с локального жесткого диска) помещаются в изолированную программную среду, локальную для файловой системы. Эти файлы не могут загружать содержимое из сети. Дополнительные сведения см. в разделе «
Локальные изолированные программные среды
».
-
Серверы RTMP (Real-Time Messaging Protocol) могут ограничивать доступ к содержимому. Дополнительные сведения см. в разделе «
Содержимое, передаваемое с помощью серверов RTMP
».
Если загруженное мультимедийное содержимое является изображением, аудио- или видеофайлом, его данные, такие как пикселные и звуковые данные, будут доступными для SWF-файла из другой изолированной программной среды, только если домен этого SWF-файла добавлен в файл политики URL-адресов в исходном домене содержимого. Дополнительные сведения см. в разделе «
Получение данных загруженного мультимедийного содержимого
».
К числу других форм загруженных данных относятся текстовые файлы или XML-файлы, загруженные с помощью объекта URLLoader. В этом случае для доступа к данным из другой изолированной программной среды также необходимо предоставить разрешение через файл политики URL-адресов в исходном домене. Дополнительные сведения см. в разделе «
Использование классов URLLoader и URLStream
».
Примечание.
Файлы политики никогда не требуются для загрузки удаленного содержимого или данных кодом, который выполняется внутри изолированной среды приложения AIR.