Блог от 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.

       

3 комментария:

  1. Сталкивалась с проблемой на примере AIR Minibuilder, раньше, чем появился 10.3. Более того, помнится, изрядно поломала голову, почему моя галерея, созданная в FD, легко и просто грузит XML из Интернета, а та же галерея, скопированная в другую папку, ничего такого делать не хочет. Сейчас, значит, правила стали еще жестче. Лечение именно такое, как написано, других вариантов, похоже, просто нет.

    ОтветитьУдалить
  2. Для того чтобы избавиться от таких ошибок,
    достаточно просто дописать в конфиг с новой строки свои локальные диски:
    C:\
    D:\

    ОтветитьУдалить
  3. Спасибо, помогло, весь мозг себе сломал

    ОтветитьУдалить

Можно использовать некоторые HTML-теги, например <b>, <i>, <a>

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

Обо мне



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

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

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

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