Блог от AS3Coder'a о JavaScript, HTML, CSS... и немного о Flash.

вторник, 25 октября 2011 г.

Доверенные .swf-файлы

С недавнего времени в контекстном меню FlashPlayer'a появился новый пункт "Глобальные настройки". А именно с версии 10.3.



Если с "Хранилищем", "Камерой и микрофоном" и "Воспроизведением" всё понятно (они итак были доступны в пункте "Параметры..."), то вот во вкладке "Дополнительно" появились доколе неизвестные настройки.

Подробнее я хочу остановить на "Настройках доверенной папки..."



Что за доверенная папка?

На самом деле слово "папки" немного вводит в заблуждение. Естественно здесь указываются .swf-файлы, которым пользователь явно доверяет. А именно:
  • домен, с которого загружаются .swf-файлы,
  • путь к локальному .swf-файлу на компьютере пользователя,
  • путь к локальному каталогу, в котором содержаться .swf-файлы
И что же мы доверяем (разрешаем) указанным файлам?

С версии 10.1 локально запущенным .swf-файлам запрещается загружать данные из сети и из локального диска пользователя. Так вот указав, что этот .swf-доверенный ему разрешается делать эти запросы.

Сделано это для того, чтобы на этапе разработки было не обязательным постоянно выкладывать приложение на сервер.

Для чего указывается домен и что мы ему доверяем, я так и не разобрался. В cправке тоже ничего по поводу доменов. Может разрешаем локальным .swf-файлам загружать данные с этого домена? Не знаю. Не проверял. Может быть вы знаете?


К чему я завел этот разговор?

Недавно пришлось вернуться к одному старому проекту. Проект представляет собой простую презентацию с видео и небольшим каталогом. И вот тут, я столкнулся с тем, что главный .swf-файл зашитый в .exe-файл FlashPlayer'a не может подгрузить данные с каталога, который лежит рядом. Получаю сообщение с ошибкой о нарушении политики безопасности. Удивление конечно было огромным, когда я узнал, что в новых версиях плеера этого делать нельзя.

Чтож? Пришлось разбираться...

Как лечиться?

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

Во-вторых, можно сделать это за пользователя (естественно с помощью каких-то оберток или стартеров). Для этого в системе (в качестве примера возьму Windows 7, об остальных операционных системах информацию можно найти в справке) имеются каталоги, в которых хранятся .cfg-файлы конфигурации безопасности FlashPlayer'a. Таких каталогов два:

1. Для всех учетных записей системы.

C:\WINDOWS\system32\Macromed\Flash\FlashPlayerTrust

2. Для конкретного пользователя.

C:\Users\JohnD\AppData\Roaming\Macromedia\Flash Player\#Security\FlashPlayerTrust

В эти каталоги можно добавлять свои .cfg-файлы с любым именем. Простой текстовый файл, где каждая строчка - это путь до доверенных .swf-файла или папки.

Все современные среды разработки создают свои .cfg-файлы и при создании проекта дописывают в него в качестве доверенной папки папку нового проекта. Именно поэтому многие не заметили этого нововведения. Например FlashDevelop создает вот этот файл:

C:\Users\AS3Coder\AppData\Roaming\Macromedia\Flash Player\#Security\FlashPlayerTrust\FlashDevelop.cfg

А для профилактики подобных ситуаций автор кода может узнать каким образом запущен .swf-файл. Для этого существует свойство Security.sandboxType

Итого

Adobe окончательно уводит FlashPlayer с локального использования в веб. Не пишите больше локальных приложений для него, без оберток, таких как Zinc или AIR.

       

Поиск по блогу

Обо мне



Farid Shamsutdinov (AS3Coder)
Russia, Tatarstan, Kazan
as3coder@gmail.com

Подробнее...

Постоянные читатели

© 2014 Farid Shamsutdinov. При копировании материалов, ссылка на источник обязательна. Технологии Blogger.