Руководство по actionscript. часть 3, стр. 081
Описание остальных операций кросс-скриптинга можно найти в справочнике по языку ActionScript корпорации Adobe, где явно указаны ограничения безопасности, которые применяются к каждой операции языка ActionScript.
Загрузка данных
В общем смысле термин «загрузка данных» может использоваться для описания широкого спектра операций загрузки приложения Flash Player, включая загрузку файлов с сервера через метод экземпляра download ( ) класса FileRef erence, загрузку объектов с помощью приложения Flash Remoting, загрузку бинарных данных через объект Socket и т. д. Однако для текущего обсуждения (и для оставшейся части данной главы) загрузка данных подразумевает следующее:
? загрузку внешнего текста, бинарных данных или переменных с помощью метода экземпляра load ( ) класса URLLoader;
? загрузку данных с помощью метода экземпляра load ( ) класса URLStrearn.
I Чтобы узнать об ограничениях, налагаемых средой Flash на операции загрузки данных, м& л * которые не рассматриваются в этой главе, обратитесь к справочнику по языку ActionScript ——-Щ? корпорации Adobe.
Для метода экземпляра load ( ) класса URLLoader формат загружаемых данных (текст, бинарные данные или переменные) задается переменной экземпляра dataFormat класса URLLoader. К обычным текстовым форматам файлов относятся форматы XML, ТХТ и HTML. К обычным форматам бинарных данных относятся изображения, SWF-файлы и сериализованные объекты в формате ActionScript Message Format (AMF). Тем не менее бинарными данными может быть любой файл или содержимое, загруженное в объект ByteArray для дальнейшей обработки в исходном бинарном формате. Переменные загружаются в од-ном-единственном формате: преобразованные в URL-строки переменные, которые были загружены в виде пар «имя/значение» из внешнего текстового файла или сценария.
Стоит отметить, что, как и в случае с загрузкой содержимого, внешняя операция становится операцией загрузки данных благодаря конкретному методу,
используемому для загрузки, а не типу файла данного ресурса. Например, загрузка SWF-файла с помощью метода экземпляра load ( ) класса URLLoader считается операцией загрузки данных] загрузка того же SWF-файла с помощью метода экземпляра load ( ) класса Loader считается операцией загрузки содержимого.
Ограничения на загрузку содержимого, обращение к содержимому в виде данных, загрузку данных и кросс-скриптинг
Теперь, когда мы разобрались, что представляют собой операции загрузки содержимого, обращения к содержимому в виде данных, кросс-скриптинга и загрузки данных, посмотрим, как каждый из четырех типов безопасности песочниц приложения Flash Player ограничивает эти операции.
В следующих четырех таблицах (табл. 19.3-19.6) перечислены условия, при которых каждый тип безопасности песочницы разрешает или запрещает выполнять операции загрузки содержимого, обращения к содержимому в виде данных, кросс-скриптинга и загрузки данных. В каждой таблице представлены конкретные правила, устанавливаемые отдельным типом безопасности песочницы, — разрешается или запрещается использовать внешние операции, перечисленные в крайнем левом столбце, для обращения к ресурсам, перечисленным в оставшихся столбцах таблицы.
Как видно из таблиц, некоторые операции допускаются только при наличии разрешения создателя или распространителя. Разрешение создателя подразумевает, что SWF-файл включает надлежащий вызов статического метода allowDomain ( ) класса Security(или, вpeдкиxcлyчaяx, вызoвмeтoдaallowInsecureDomain ( ) ).Разрешение распространителя подразумевает, что распространитель ресурса сделал доступным надлежащий файл междоменной политики безопасности. Более подробную информацию можно найти далее, в разд. «Разрешения создателя (allowDomain( ))» и «Разрешения распространителя (файлы политики безопасности)».
Как видно из табл. 19.3-19.6, загрузка содержимого разрешается в большем количестве ситуаций по сравнению с загрузкой содержимого в виде данных, кросс-скриптингом и загрузкой данных. Например, приложению может быть дано разрешение на загрузку и отображение растрового изображения, но запрещен доступ к исходным пиксельным данным этого изображения. Подобным образом приложению может быть дано разрешение на загрузку и отображение внешнего SWF-файла, но может требоваться разрешение на кросс-скриптинг этого SWF-файла.
Стоит отметить, что в табл. 19.3-19.6 рассмотрены разрешения только для одного направления взаимодействия, когда SWF-файл загружает или обращается к внешнему ресурсу. В этих таблицах не описано обратное направление взаимодействия, когда загруженный SWF-файл взаимодействует с SWF-файлом, загрузившим его. Информацию по двунаправленному взаимодействию между SWF-файлами можно найти в разделе Programming ActionScript 3.0 > Flash Player APIs > Flash Player Security > Cross-scripting документации корпорации Adobe.