Общие сведения о безопасности платформы Flash

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

Модель безопасности, используемая в средах выполнения 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.