Руководство по actionscript. часть 3, стр. 085

Безопасность сокетов

В языке ActionScript подключение к сокетам осуществляется посредством классов XMLSocket, Socket и NetConnection. В табл. 19.7 и 19.8 перечислены конкретные местоположения и порты, к которым можно открывать сокетные соединения с помощью методов классов XMLSocket и Socket. В таблицах не описан класс NetConnection, который используется в приложениях Adobe Flash Media Server и Adobe Flex. Информацию по безопасности класса NetConnection можно найти в документации по этим продуктам.

И в табл. 19.7, и в табл. 19.8 термин «разрешениераспространителя» подразумевает, что оператор сервера сделал доступным надлежащий файл междоменной политики безопасности. Более подробную информацию можно найти далее, в разд. «Разрешения распространителя (файлы политики безопасности)».

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

Таблица 19.7. Удаленный тип безопасности песочницы, допустимые и запрещенные сокетные соединения

Локальная область действия, любой порт Удаленная область действия внутри региона происхождения SWF-файла, порт 1024 и выше Удаленная область действия внутри региона происхождения SWF-файла, порт 1023 и ниже Удаленная область действия за пределами области происхождения SWF-файла, любой порт

Допускается только по разрешению распространителя Допускается Допускается только по разрешению распространителя Допускается только по разрешению распространителя

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

Таблица 19.8. Локальные типы безопасности песочниц, допустимые и запрещенные сокетные соединения

Тип безопасности песочницы Локальная область действия, любой порт Удаленная область действия, любой порт

Локальный с поддержкой файловой системы Запрещается Запрещается

Локальный с поддержкой сети Допускается только по разрешению распространителя Допускается только по разрешению распространителя

Локальный с установленным доверием Допускается Допускается

Примеры сценариев безопасности

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

Руководство по actionscript. часть 3, стр. 086

Шпионское вложение в электронном письме — без системы безопасности Flash Player

Джо Хакер хочет похитить персональные данные Дэйва Юзера. Джо знает, что Дэйв заполняет свои налоговые декларации с помощью приложения АВСТах, работающего под управлением операционной системы Windows. Джо проводит небольшое исследование и обнаруживает, что приложение АВСТах хранит информацию о годовой налоговой декларации в XML-файле, который находится по адресу с: \ABCTax\taxreturn. xml. Если Джо сможет получить этот файл, он сможет воспользоваться содержащейся в нем информацией, чтобы открыть банковский счет и обратиться за получением кредитной карты от лица Дэйва. Итак, Джо отправляет по электронной почте письмо Дэйву, прикрепив к письму внешне безобидную анимацию cartoon, swf. Дэйв открывает электронное письмо и воспроизводит анимацию в браузере на своей локальной машине. Без ведома Дэйва файл cartoon. swf тайно использует метод URLLoader. load ( ) для получения файла taxreturn. xml из локальной файловой системы. После этого файл cartoon. swf использует метод flash. net. sendToURL ( ), чтобы выгрузить файл taxreturn. xml на сайт Джо.

Джо получает кредитную карту на имя Дэйва и покупает приставку Nintendo Wii с множеством отличных игр.

Шпионское вложение в электронном письме — с системой безопасности Flash Player

Как и раньше, Джо отправляет Дэйву электронное письмо, к которому прикреплена внешне безобидная анимация cartoon. swf. Дэйв открывает электронное письмо и воспроизводит анимацию в браузере на своей локальной машине. Поскольку файл cartoon. swf открывается из локальной области действия, приложение Flash Player проверяет, была ли включена поддержка сети при компиляции файла cartoon. swf.

Сначала предположим, что файл cartoon. swf был скомпилирован без поддержки сети. В этом случае приложение Flash Player присваивает файлу cartoon, swf тип безопасности песочницы «локальный с поддержкой файловой системы». Как и раньше, файл cartoon. swf тайно использует метод URLLoader. load ( ) для получения файла taxreturn. xml из локальной файловой системы. В соот-

ветствии с табл. 19.4 файлу cartoon. swf разрешается загрузить эти локальные данные. После этого он пытается использовать метод flash. net. sendToURL ( ), чтобы выгрузить файл taxreturn. xml на сайт Джо, однако эта попытка блокируется, поскольку локальным SWF-файлам с поддержкой файловой системы не разрешается выполнять операции flash. net. sendToURL ( ).

В предыдущих таблицах не рассматривались ограничения безопасности конкретно для метода flash. net. sendToURL(), однако, как отмечалось ранее, определить ограничения безопасности для любого метода интерфейса API приложения Flash Player можно в справочнике по языку ActionScript корпорации Adobe.

Теперь предположим, что файл cartoon. swf был скомпилирован с поддержкой сети. В данном случае приложение Flash Player присваивает ему тип безопасности песочницы «локальный с поддержкой сети». Как и раньше, файл cartoon, swf пытается тайно использовать метод URLLoader. load ( ) для получения файла taxreturn. xml из локальной файловой системы. Однако эта попытка блокируется, поскольку, в соответствии с табл. 19.5, локальные SWF-файлы с поддержкой сети не могут использовать операции загрузки данных для ресурсов в локальной области действия.

Джо вынужден покупать приставку Nintendo Wii за свои деньги.

Внутренняя корпоративная информация — без системы безопасности Flash Player

Джо Хакер хочет получить некую служебную информацию, чтобы совершить выгодную сделку на бирже. Джо раньше работал в корпорации WYZ, у которой есть общедоступный сайт www. wyzcorp. com. Джо остался в хороших отношениях с корпорацией WYZ, поэтому его наняли по контракту, чтобы обновить сведения о корпорации в файле profile. swf на сайте www. wyzcorp. com. Джо знает, что корпорация WYZ планирует выпустить важный продукт, что повлияет на стоимость акций компании. Джо также знает, что даты выпуска новых продуктов корпорации WYZ хранятся на внутреннем сайте, который находится за межсетевым экраном, по следующему адресу: strategy. wyzcorp. com/releasedates. html. Если Джо сможет тайно получить дату выпуска нового продукта, то сможет скупить акции корпорации WYZ за день до выхода этого продукта, а затем выгодно продать их.

Итак, Джо добавляет некий код в файл profile. swf, использующий метод URLLoader. load ( ), чтобы попытаться загрузить файл: strategy. wyzcorp. com/ releasedates. html. После этого сотрудник корпорации WYZ просматривает сведения о корпорации по адресу www. wyzcorp. com/profile. swf. Поскольку компьютер сотрудника находится за межсетевым экраном, он имеет доступ к сайту strategy. wyzcorp. com, поэтому попытка загрузить файл releasedates. html оказывается успешной! Без ведома сотрудника файл profile. swf использует метод flash. net. sendToURL ( ), чтобы выгрузить файл releasedates. html на сайт Джо.

Акции корпорации WYZ взлетают в цене, а Джо теперь может позволить себе заниматься любимым делом.

Внутренняя корпоративная информация — с системой безопасности Flash Player

Как и раньше, Джо размещает файл profile. swf на сайте www. wyzcorp. com, который использует метод URLLoader. load ( ), чтобы попытаться загрузить файл strategy. wyzcorp. com/releasedates. html. После этого сотрудник корпорации WYZ просматривает сведения о корпорации по адресу www. wyzcorp. com/profile. swf. Поскольку файл profile. swf открывается в удаленной области действия, среда выполнения Flash присваивает ему тип безопасности песочницы «удаленный». Когда файл www. wyzcorp. com/profile. swf пытается загрузить файл strategy. wyzcorp. com/releasedates. html, попытка блокируется, поскольку, в соответствии с табл. 19.3, удаленный SWF-файл не может использовать операции загрузки данных для ресурсов, находящихся за пределами удаленного региона происхождения этого файла.

Руководство по actionscript. часть 3, стр. 087

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

Межсайтовая информация —

без системы безопасности Flash Player

Джо Хакер хочет похитить информацию о некоторых банковских счетах. Он работает в агентстве Hipster Ad Agency, занимающемся производством рекламы для банка ReallyHuge Bank. У этого банка есть система интернет-банкинга, доступная по адресу www. reallyhugebank. com/bank. swf. Приложение bank, swf загружает рекламу из файла www. hipsteradagency. com/ad. swf. Джо изучил структуру файла bank, swf с помощью декомпилятора SWF-файлов и теперь знает, в каких переменных приложение bank, swf хранит номера банковских счетов и пароли. С преступным намерением Джо добавляет в файл ad. swf код, который считывает значения этих переменных у своего родителя bank. swf, и затем использует метод flash. net. sendToURL ( ) для отправки похищенной информации на сайт Джо. Всякий раз, когда пользователь приложения bank. swf обращается к своему счету, Джо получает номер счета и пароль.

Джо жертвует баснословно большие суммы денег организации «Гринпис».

Межсайтовая информация —

с системой безопасности Flash Player

Как и раньше, Джо добавляет в файл ad. swf код, который считывает значения нужных переменных у своего родителя bank. swf. Пользователь запускает приложение www. reallyhugebank. com/bank. swf, а оно, в свою очередь, загружает «зловредный» файл Джо www. hipsteradagency. com/ad. swf. Поскольку файл ad. swf открывается из удаленной области действия, среда выполнения Flash присваивает ему тип безопасности песочницы «удаленный». Когда файл ad. swf пытается прочитать значения переменных файла bank. swf, эта попытка блокируется, поскольку, в соответствии с табл. 19.3, удаленный SWF-файл не может использовать операции

загрузки данных для ресурсов, находящихся за пределами удаленного региона происхождения этого файла.

Джо жертвует скромную сумму денег организации «Гринпис».

Выбор локального типа безопасности песочницы

Вы получили хорошее представление о мерах безопасности, обеспечиваемых каждым типом безопасности песочниц. Кроме того, вы узнали, что SWF-файлам, открытым или загруженным из местоположений удаленной области действия, всегда присваивается тип безопасности песочницы «удаленный», а SWF-файлам, открытым или загруженным из местоположений локальной области действия, присваивается один из трех локальных типов безопасности песочниц.

Теперь поближе познакомимся с механизмами, применяемыми для выбора одного из трех локальных типов безопасности песочниц. В каждом из трех последующих разделов представлен сценарий, в котором разработчик использует один из трех локальных типов безопасности песочниц. Каждый сценарий описывает и логическое обоснование, и сам механизм для выбора каждого типа безопасности песочницы.

Компиляция локального SWF-файла с поддержкой файловой системы

Сьюзен разрабатывает приложение-календарь calendar. swf, которое будет размещаться на сайте отеля. Календарь загружает информацию о праздниках из внешнего XML-файла holiday. xml. Приложение практически готово, поэтому Сьюзен необходимо отправить его на утверждение заказчику. Несмотря на то что приложение calendar, swf со временем будет размещено на сайте, заказчик хочет показать его множеству людей в отеле. В процессе демонстрации заказчик не желает иметь постоянное подключение к Интернету. Итак, Сьюзен отправляет файлы calendar. swf и holiday. xml заказчику.

Руководство по actionscript. часть 3, стр. 088

Чтобы в процессе демонстрации приложение calendar, swf могло загружать файл holiday. xml из локальной файловой системы, Сьюзен скомпилировала SWF-файл календаря с установленным в значение false флагом компилятора — use-network. В зависимости от используемой среды разработки применяются различные механизмы для установки флага компилятора — use-network. В приложении Flex Builder 2 Сьюзен выполняет следующие шаги, чтобы установить в значение false флаг компилятора-use-network.

1. На палитре Navigator (Навигатор) Сьюзен выбирает папку проекта для приложения-календаря.

2. В меню Project (Проект) она выбирает команду Properties (Свойства).

3. В окне Properties (Свойства) она выбирает раздел ActionScript Compiler (Компилятор ActionScript).

4. В поле ввода Additional compiler arguments (Дополнительные аргументы компилятора) она вводит — use-network=false.

5. Чтобы подтвердить установку, Сьюзен нажимает кнопку ОК.

В среде разработки Flash Сьюзен выполняет следующие шаги, чтобы установить в значение false флаг компилятора — use-network:

1. В меню File (Файл) Сьюзен выбирает команду Publish Settings (Настройки публикации).

2. В окне Publish Settings (Настройки публикации) она переходит на вкладку Flash.

3. В раскрывающемся списке Local playback security (Безопасность локального воспроизведения) она выбирает пункт Access local files only (Обращение только к локальным файлам).

4. Чтобы подтвердить установку, Сьюзен нажимает кнопку ОК.

При использовании консольного компилятора из бесплатного инструментария разработчика Flex SDK Сьюзен указывает значение флага — use-network в качестве параметра компилятора mxmlc. Вот команда, которую выполняет Сьюзен, работая в операционной системе Microsoft Windows:

mxmlc. exe — use-network=fa1se — file-specs c:\projects\ca1endar\Calendar. as — output с:\projects\ca1endar\bin\Calendar. swf

Компиляция локального SWF-файла с поддержкой сети

Дориан разрабатывает видеоигру race. swf для сайта своей компании. Посетители сайта могут играть в эту игру и отправлять свои лучшие результаты в режиме онлайн. Дориан хочет сделать загружаемую версию своей игры, в которую можно будет играть при отсутствии подключения к Интернету. Когда у пользователя отсутствует подключение к Интернету, загружаемая версия игры будет сохранять лучшие результаты в совместно используемом локальном объекте и отправит их на сервер, как только пользователь подключится к Интернету.

Руководство по actionscript. часть 3, стр. 089

Дориан знает, что большая часть посетителей предпочитает не запускать исполняемые файлы из неизвестных источников, поэтому она решает сделать свою игру в виде загружаемого SWF-файла, а не в виде исполняемого файла проектора. Чтобы позволить игре, выполняемой в виде локального SWF-файла, подключаться к серверу, на котором хранятся лучшие результаты, Дориан компилирует приложение race. swf с установленным в значение true флагом компилятора — use-network.

Чтобы установить флаг — use-network, Дориан использует тот же механизм, который использовала Сьюзен в предыдущем сценарии с приложением calendar. swf, но при установке флага — use-network вместо значения false указывает значение true. При использовании среды разработки Flash Дориан выбирает для параметра Local playback security (Безопасность локального воспроизведения) значение Access network only (Обращение только к сети) вместо значения Access local files only (Обращение только к локальным файлам).

Установка локального доверия

Колин создает инструмент администрирования admin. swf для сокетного приложения-сервера. Файл admin. swf предназначен для работы либо в том же домене, в котором находится сокетный сервер, либо в локальной файловой системе администратора этого сервера. Инструмент администрирования подключается к удаленному сокетному серверу и не загружает никакие локальные файлы, поэтому Колин компилирует приложение как локальный SWF-файл с поддержкой сети.

Первый экран инструмента администрирования представляет собой простую форму для ввода имени сервера и пароля. При входе в систему инструмент администрирования предлагает сохранить введенный пароль сервера. Если пользователь соглашается, то инструмент администрирования сохраняет пароль в совместно используемом локальном объекте. В следующий раз при входе в систему инструмент администрирования автоматически заполнит текстовое поле для ввода пароля.

В процессе разработки Колин вдруг осознает, что, поскольку файл admin. swf является локальным SWF-файлом с поддержкой сети, другие локальные SWF-файлы с поддержкой сети, находящиеся на том же компьютере, на котором выполняется приложение admin. swf, смогут загрузить это приложение и прочитать пароль из текстового поля!

Чтобы закрыть эту потенциальную брешь в безопасности, Колин принимает разумное решение: файлу admin. swf должен присваиваться тип безопасности песочницы «локальный с установленным доверием». В результате другие локальные SWF-файлы с поддержкой сети не смогут прочитать значение из текстового поля для ввода пароля.

Чтобы превратить файл admin, swf в локальный SWF-файл с установленным доверием, Колин создает инсталлятор, который устанавливает доверие для местоположения файла admin. swf путем помещения конфигурационного файла в директорию Global Flash Player Trust на локальной машине. В соответствии с официальным форматом языка конфигурационный файл содержит одну-единственную текстовую строку: местоположение файла admin. swf в локальной файловой системе. В итоге, когда приложение Flash Player загружает файл admin. swf из указанного местоположения, этому файлу присваивается тип безопасности песочницы «локальный с установленным доверием».

Полную информацию, посвященную созданию и управлению устанавливающими доверие конфигурационными файлами, можно найти в разделе Programming ActionScript 3.0 > Flash Player APIs > Flash Player Security > Overview of permission controls > Administrative user controls документации корпорации Adobe.

Колин также понимает, что пользователи инструмента администрирования могут захотеть переместить файл admin. swf в любое произвольное местоположение. Чтобы позволить пользователю перемещать файл admin. swf в новое местоположение, не теряя статус «локальный с установленным доверием», Колин включает инструкцию в документацию по инструменту администрирования (см. врезку выше).

Описанный сценарий с инструментом администрирования сокетного сервера демонстрирует два доступных механизма установления доверия для локального SWF-файла: конфигурационные файлы на компьютере, на котором выполняется приложение Flash Player (обеспечиваемые инсталлятором Колина), и инструмент Flash Player Settings Manager (к которому обращается пользователь). Подробное описание инструмента Flash Player Settings Manager можно найти в разделе Programming ActionScript 3.0 > Flash Player APIs > Flash Player Security > Overview of permission controls > User controls документации корпорации Adobe.

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

1. Откройте инструмент Flash Player Settings Manager, загрузив в браузере следующую страницу: http://www. macromedia. com/support/documentation/en/flashplayer/ help/settings_manager04.html.

2. Щелкните кнопкой мыши на ссылке Edit locations (Управление местоположениями) параметра Always trust files in these locations (Всегда доверять файлам в следующих местоположениях) в разделе Global Security Settings (Глобальные настройки безопасности) и выберите команду Add location (Добавить местоположение).

3. Введите или выберите местоположение, для которого вы хотите установить доверие.

Руководство по actionscript. часть 3, стр. 090

Стоит отметить, что, если приложение Flash Player выполняется в тот момент, когда устанавливается доверие (либо с помощью конфигурационных файлов, либо с помощью инструмента Flash Player Settings Manager), новый доверительный статус для указанного SWF-файла не вступит в силу до тех пор, пока приложение не будет перезапущено. Для версий Flash Player, реализованных в виде дополнительных модулей или элементов управления ActiveX, «перезапуск» подразумевает выключение всех экземпляров приложения Flash Player — даже тех, которые выполняются в других окнах браузера!

Для разработчиков доверие устанавливается автоматически

Чтобы упростить тестирование локального содержимого, предназначенного для публикации в Интернете, приложение Flex Builder 2 корпорации Adobe автоматически устанавливает доверие для разрабатываемых проектов. Для этого оно добавляет запись, описывающую путь для выходной папки каждого проекта (обычно /bin/), в файл flexbuilder. cf д, находящийся в директории User Flash Player Trust. Подобным образом отладочная версия приложения Flash Player среды разработки Flash автоматически устанавливает доверие для всех открываемых или загружаемых SWF-файлов в локальной области действия.

Вследствие этого при загрузке элементов в процессе разработки вы можете не столкнуться с проблемами безопасности, которые возникнут у конечного пользователя. Например, SWF-файл, находящийся в папке проекта/bin/, сможет загрузить локальный файл, даже если у него есть только разрешение для доступа к сети.

Чтобы протестировать приложение в тех условиях, в которых будет находиться ваш конечный пользователь, выполняйте его в соответствующей целевой среде. Например, для веб-приложений тестирование необходимо проводить в Интернете. Для локальных приложений без установленного доверия, разрабатываемых в приложении Flex Builder 2, тестирование проводите из локальной папки, для которой не установлено доверие (Рабочий стол операционной системы обычно является именно такой папкой). Для локальных приложений без установленного доверия, разрабатываемых в среде разработки Flash, используйте команду меню File > Publish Preview > HTML (Файл > Просмотр публикации > HTML), чтобы просмотреть приложение в браузере (среда разработки Flash не устанавливает автоматически доверие для содержимого, просматриваемого в браузере).

^ I В процессе отладки вы должны всегда убеждаться в том, что тип безопасности песоч-м$ 4 „ ницы вашего приложения соответствует типу безопасности песочницы, который будет * л!?.’ использоваться при внедрении приложения.

Чтобы проверить тип безопасности песочницы SWF-файла на этапе выполнения, получите значение переменной Да sh. system. Security. sandboxType внутри этого SWF-файла.

Чтобы проверить, для каких папок на данном компьютере установлено доверие, просмотрите конфигурационные файлы, находящиеся в директориях User Flash Player Trust и Global Flash Player Trust, или воспользуйтесь онлайн-инструментом Flash Player Settings Manager, который доступен по адресу http://www. adobe. com/support/ documentation/en/flashplayer/help/index. html.

Чтобы удалить доверие для проекта приложения Flex Builder 2 (это позволит имитировать работу конечного пользователя с приложениями без установленного доверия), удалите соответствующий путь из файлаДехЬи13^ег. cf д, находящегося в директории User Flash Player Trust. Стоит отметить, однако, что, поскольку приложение Flex Builder 2 автоматически восстанавливает файл flexbuilder. cf д при создании нового проекта, вам придется удалять данный путь из файла после каждого создания или импорта проекта. Узнать местоположение директорий User Flash Player Trust и Global Flash Player Trust можно в разделе Programming ActionScript 3.0 > Flash Player APIs > Flash Player Security > Overview of permission controls документации корпорации Adobe.

Используемый по умолчанию тип безопасности песочницы

И приложение Flex Builder 2, и консольный компилятор mxmlc устанавливают флаг компилятора — use-network в значение true, если это значение не указано явно. Таким образом, по умолчанию, если SWF-файл, скомпилированный с помощью приложения Flex Builder 2 или компилятора mxmlc, запускается в локальной области действия из любого местоположения, для которого не установлено доверие, ему будет присвоен тип безопасности «локальный с поддержкой сети».

Каким бы странным это ни казалось, но значением по умолчанию для параметра Local playback secutiry (Безопасность локального воспроизведения) среды разработки Flash является Access local files only (Обращение только к локальным файлам).

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

Чтобы избежать недоразумений, всегда явно указывайте желаемое значение для флага компилятора — use-network и параметра публикации Local playback secutiry (Безопасность локального воспроизведения) среды разработки Flash.

Разрешения распространителя (файлы политики безопасности)

На протяжении этой главы мы неоднократно видели, как система безопасности приложения Flash Player ограничивает доступ SWF-файла к внешним ресурсам. Теперь рассмотрим, как в некоторых случаях распространитель ресурса может использовать разрешения распространителя, чтобы обойти эти ограничения.

Руководство по actionscript. часть 3, стр. 091

Напомним, что «распространитель ресурса» — это сторона, которая предоставляет ресурс из некоторого удаленного региона. Например, и администратор сайта, и администратор д*А’ сокетного сервера являются распространителями ресурсов.

Как сторона, отвечающая за ресурсы из конкретного удаленного региона, распространитель ресурса может устанавливать доверие для SWF-файлов из внешних источников, чтобы они могли обращаться к этим ресурсам. Чтобы установить доверие для SWF-файлов на доступ к определенному набору ресурсов, распространитель ресурса использует особый механизм разрешений, называемый файлом политики безопасности. Файл политики безопасности — это простой XML-документ, который содержит список доверенных источников SWF-файлов. Вообще говоря, файл политики безопасности предоставляет SWF-файлам из своего списка доверенных источников доступ к ресурсам, которые в обычной ситуации оказываются недоступными из-за ограничений безопасности приложения Flash Player.

К типам операций, которые потенциально могут быть разрешены файлом политики безопасности, относятся:

? загрузка содержимого в виде данных;

? загрузка данных;

? подключение к сокету;

? импортирующая загрузка (рассматривается далее, в разд. «Импортирующая загрузка»).

С помощью файла политики безопасности невозможно разрешить операции кросс-скрип-м$ 4 ш тинга — Узнать подробнее о разрешении операции кросс-скриптинга можно в разд. «Раз* лЗь{.’ решения создателя (allowDomain())».

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

безопасности может дать файлу http://site-a. com/map. swf разрешение на чтение пикселов из файла http://site-b. com/satellite-image. jpg или разрешение на загрузку файла http://siteb. com/map-data. xml.

В соответствии с данными из табл. 19.3,19.5,19.7 и 19.8 файл политики безопасности позволяет предоставить SWF-файлу доступ к ресурсам, которые оказываются недоступными, когда:

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

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

? локальный SWF-файл с поддержкой сети пытается выполнить операцию доступа к содержимому в виде данных для ресурса в удаленной области действия;

? локальный SWF-файл с поддержкой сети пытается выполнить операцию загрузки данных для ресурса в удаленной области действия;

? удаленный SWF-файл пытается подключиться к сокету внутри его региона происхождения, но к порту ниже 1024;

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

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

Руководство по actionscript. часть 3, стр. 092

В следующих разделах описываются механизмы использования файлов политики безопасности распространителями ресурсов для разрешения доступа к ресурсам в каждой из перечисленных ситуаций.

Дополнительную информацию по файлам политики безопасности можно найти в разделе Programming ActionScript 3.0 > Flash Player APIs > Flash Player Security > Overview of permission controls > Web Site controls (cross-domain policy files) документации корпорации Adobe.

В приложении Flash Player 6 файлы политики безопасности применялись исключительно для разрешения междоменного взаимодействия и поэтому назывались файлами междо-5? менной политики безопасности. С момента появления приложения Flash Player версии 7.0.19.0 файлы политики безопасности также начали использоваться для разрешения сокетных подключений к портам из нижнего диапазона. Чтобы как-то отразить это расширенное назначение, в данной книге используется более короткий термин «файл политики безопасности», однако в других источниках вы будете встречать первоначальный термин — «файл междоменной политики безопасности».

Разрешение операций загрузки данных и обращения к содержимому в виде данных

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

в виде данных для заданного набора удаленных ресурсов, используйте следующую общую последовательность действий.

1. Создайте файл политики безопасности.

2. Разместите созданный файл политики безопасности в том же удаленном регионе (то есть в том же домене или для того же IP-адреса), где находится ресурс, для которого устанавливается разрешение.

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

Создание файла политики безопасности

Для создания файла политики безопасности используйте такую последовательность действий.

1. Создайте новый текстовый файл.

2. Добавьте в файл список желаемых разрешенных источников, используя официальный синтаксис корпорации Adobe для файлов политики безопасности.

3. Сохраните текстовый файл.

Официальный синтаксис корпорации Adobe для файлов политики безопасности основан на языке XML и имеет следующую структуру:




SYSTEM «http://www. adobe. com/xml/dtds/cross-domain-policy. dtd»>



Здесь доменИли1Р определяет доменное имя или IP-адрес разрешенного источника. SWF-файлу, загруженному из разрешенного источника, разрешается выполнять операции загрузки данных и обращения к содержимому в виде данных для заданного набора ресурсов. Как вы узнаете из следующего раздела, конкретный набор ресурсов, доступ к которым разрешает файл политики безопасности, определяется местоположением этого файла.

Руководство по actionscript. часть 3, стр. 093

Файл политики безопасности может содержать любое количество тегов . Например, следующий файл политики безопасности определяет три разрешенных источника: examplel. com, example2.com и example3.com.




SYSTEM «http://www. adobe. com/xml/dtds/cross-domain-policy. dtd»>







Когда символ * используется в значении атрибута domain, он обозначает подстановочный символ. Например, следующий файл политики безопасности разрешает доступ для сайта examplel. com и его любого поддомена, независимо от уровня вложенности (например, games. examplel. com, driving. games. examplel. com и т. д.):




SYSTEM «http://www. adobe. com/xml/dtds/cross-domain-policy. dtd»>



Сам по себе символ * разрешает доступ для всех источников:




SYSTEM «http://www. adobe. com/xml/dtds/cross-domain-policy. dtd»>



Чтобы включить локальную область действия в список разрешенных источников, файл политики безопасности должен явным образом установить доверие для всех источников. Для этого должен быть указан символ * (любой источник) в качестве значения атрибута domain. Таким образом, чтобы локальные SWF-файлы с поддержкой сети могли загружать XML-файлы с сайта, атрибуту domain файла политики безопасности этого сайта должно быть установлено значение *.

Руководство по actionscript. часть 3, стр. 094

Размещение файла политики безопасности

После создания файл политики безопасности должен быть размещен в том же удаленном регионе (то есть домене или IP-адресе), где находится ресурс, к которому разрешается доступ. Например, если файл политики безопасности разрешает доступ к содержимому сайта www. example. com, файл политики безопасности должен быть также размещен на сайте www. example. com.

Набор ресурсов, к которым файл политики безопасности разрешает доступ, определяется конкретным местоположением этого файла. Если файл политики безопасности размещается в корневой директории сайта, то доступ будет разрешен ко всему сайту. Например, файл политики безопасности, размещенный по адресу http:// www. example. com, разрешает доступ ко всему содержимому сайта www. example. com.

Когда файл политики безопасности размещается в поддиректории сайта, он разрешает доступ только к этой директории и к ее поддиректориям. Например, файл политики безопасности, размещенный по адресу http://www. example. com/assets, разрешает доступ ко всему содержимому директории /assets/ и ее поддиректорий, но не разрешает доступ ни к корневой директории сайта www. example. com, ни к любой другой поддиректории этого сайта.

С целью автоматизации процесса загрузки файлов политики безопасности язык ActionScript определяет используемое по умолчанию имя и местоположение для файлов политики безопасности. Любой файл политики безопасности с именем crossdomain. xml, размещенный в корневой директории сайта, считается

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

Получение разрешения на загрузку данных из файла политики безопасности

Когда на сайте размещается используемый по умолчанию файл политики безопасности, устанавливающий разрешение для определенного удаленного региона, SWF-файлы из этого региона могут загружать данные с сайта, просто выполняя желаемую операцию загрузки данных. Предположим, что на сайте site-a. com размещен следующий используемый по умолчанию файл политики безопасности, который разрешает доступ для источников site-b. com и www. site-b. com:




SYSTEM «http://www. adobe. com/xml/dtds/cross-domain-policy. dtd»>





Чтобы загрузить файл http://site-a. com/assets/file. xml, любой SWF-файл из источника www. site-b. com или site-b. com может использовать следующий код:

var url loader-.URLLoader = new URLLoader ( ):

url loader. load(new URLRequest(«http://si te-a. com/assets/file. xml»));

Поскольку файл политики безопасности сайта site-a. com размещается в используемом по умолчанию местоположении, приложение Flash Player находит его автоматически и разрешает загрузить файл file. xml.



Полезные ссылки
Случайные записи
  • 11.03.2011">Руководство по actionscript. часть 4, стр. 004
  • 06.03.2011">Руководство по actionscript. часть 4, стр. 138
  • 10.05.2010">Самоучитель по креативному веб-дизайну. Книга 1, стр.65
  • 05.03.2011">Руководство по actionscript. часть 4, стр. 154
  • 26.07.2011">Ноутбук ACER AS7520G-502G16Mi
  • 23.01.2011">Руководство по actionscript. часть 1, стр. 082
  • 28.02.2011">Руководство по actionscript. часть 6, стр. 008
  • 09.03.2011">Руководство по actionscript. часть 4, стр. 069
  • 18.03.2011">Руководство по actionscript. часть 2, стр. 133
  • 26.02.2011">Руководство по actionscript. часть 6, стр. 067
  • 19.05.2010">Самоучитель по креативному веб-дизайну. Книга 2, стр.18
  • 10.05.2010">Самоучитель по креативному веб-дизайну. Книга 1, стр.56
  • 23.01.2011">Руководство по actionscript. часть 1, стр. 074
  • 23.01.2011">Руководство по actionscript. часть 1, стр. 054
  • 22.03.2011">Руководство по actionscript. часть 2, стр. 011
Опрос

Какие цвета вы предпочитаете?

View Results

Loading ... Loading ...