Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Web-дизайн 1 часть / Литература / ActionScript 2.0. Программирование во Flash MX 2004.pdf
Скачиваний:
354
Добавлен:
26.03.2015
Размер:
8.81 Mб
Скачать

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

Чтобы атаки, вроде описанной выше, были невозможны, по умолчанию плейер запрещает фильму с домена А считывать значения переменных, вызывать функции или задавать новые переменные в коде фильма с домена В. Причем неважно, где располагается фильм с домена В: на уровне плейера или в клипе фильма с домена А. Чтобы фильмы с разных доменов могли взаимодействовать, фильм, к которому происходит обращение, должен знать, какие домены являются дружественными. Для этого в его коде должен быть вызов метода System.security.allowDomain(), в качестве параметров которому переданы строки с именами допустимых доменов (или их IP-адресами). Например:

System.security.allowDomain("www.mysite.ru", "www.macromedia.com");

Для импорта фильма можно использовать как протокол HTTP, так и HTTPS. HTTPS — это HTTP в комплексе с системой безопасности SSL, обеспечивающей секретность передаваемых данных. Если фильм был получен с применением HTTPS, то к нему не сможет обратиться фильм, закачанный по HTTP, даже если они оба относятся к одному домену. Снять это ограничение позволяет метод System.security.allowInsecureDomain(), принимающий в качестве параметров имена или IP доменов, фильмы с которых являются дружественными:

System.security.allowInsecureDomain("www.mysite.ru");

Если подгружаемый фильм поступает с иного домена или по иному протоколу, чем основной фильм, то по умолчанию они будут практически полностью изолированы друг от друга. Для этого для них не только будет запрещен доступ к переменным и функциям друг друга, но и для каждого фильма будет создан индивидуальный объект Global. Это означает, что глобальные переменные, классы или новые методы и свойства существующих классов, создаваемые одним фильмом, будут недоступны для другого фильма. Чтобы фильмы использовали один объект Global, нужно снять ограничения политики сетевой безопасности при помощи метода allowDomain() или allowInsecureDomain() объекта System.security.

Политика сетевой безопасности Flash MX 2004 — сложный и запуганный вопрос ActionScriptпрограммирования. Чтобы хорошо в нем разобраться, недостаточно прочитать приведенное выше описание. Более обстоятельно он будет рассмотрен в главе 17.

10.7.9. Обобщенные библиотеки

Обычно сложный Flash-сайт или игра представляет собой множество swf-фильмов, подгружаемых по мере необходимости в основной фильм. Подобный подход к организации проекта хорош всем, кроме одной детали. Представьте, что несколько фильмов должны использовать один и тот же элемент. Это может быть встроенный шрифт (чаше всего), стандартные детали интерфейса, звуковое сопровождение. Из-за того, что подгруженный фильм не может получить элемент из библиотеки фильма основного или библиотеки другого подгруженного фильма, получается, что данный элемент придется поместить непосредственно в библиотеку самого фильма. Это приведет к тому, что один и тот же элемент придется закачать столько раз, сколько фильмов его используют. В результате может существенно возрасти суммарный «вес» проекта. Кроме того, усложнится его отладка и модификация, так как одно и то же изменение придется вносить сразу в несколько фильмов.

Справиться с описанным недостатком позволяют так называемые обобщенные библиотеки (shared libraries). Они представляют собой обычные swf-файлы, исполняющие роль хранилищ данных. Любой другой swf-фильм может импортировать из удаленной библиотеки нужный ему символ,

Соседние файлы в папке Литература