Flash Ripper RSS Readers

Авария на сайте: чтобы починить, нужен файл с полицейскими (новая политика безопасности в Flash Player 7)

Если ваше приложение делает что-либо из нижеперечисленного, то вашему сайту срочно нужен файл с описанием междоменной политики безопасности:

  • Загрузка XML или переменных с абсолютных URL;
  • Проверка загрузки клипов через абсолютный URL;
  • Подключение к серверу при помощи XMLSocket.

("Абсолютный URL" — это что-то вроде 'http://www.deneg.net' или 'http://nichego.net');

Если ваш сайт использует что-либо и названного и на нем не выложен файл с описанием междоменной политики безопасности (cross-domain policy), пользователи Flash Player 7 увидят гадкое окно с предупреждением о нарушении безопасности — оно появится при просмотре вашего клипа, созданного под формат Flash Player 6.

Что делать?

Можете почитать статью от того, кто это натворил: Security Changes in Macromedia Flash Player 7 (Deneb Meketa — вот этот изобретатель).

Во Flash Player 6 все это начиналось с того, что придумали политику безопасности:

  • Приложение, хранящееся на одном домене, не может грузить данные с другого домена;
  • Приложение, хранящееся на одном домене, не дает доступа к своим свойствам и методам тем клипам, что загружены с другого домена.

Во Flash Player 7 все стало еще хуже. Во Flash Player 6 приложения с поддоменов имели право обращаться к данным или клипам с родительского домена (и друг к другу). В Flash Player 7 доступ друг к другу/данным могут получить только приложения с точно одного и того же домена. Например, Flash Player 6 позволял клипу, хранящемуся на eshche.deneg.net загрузить XML с uzhe.deneg.net. А Flash Player 7 не позволит.

Вот еще один, более жестокий пример: во Flash Player 7, если вы обращаетесь к сайту по сокращенному URL типа "http://vodki.net" (без "www"), клипы с этого сайта не смогут загрузить данные с его полного URL, "www.vodki.net". Это ограничение касается файлов формата Flash Player 6 и Flash Player 7. Если .swf-файл опубликован под Flash Player 6 (или более ранний), то Flash Player 7 выдаст предупреждение, спрашивая посетителя, можно ли клипу получить доступ к данным с другого домена.

Файл с описанием междоменной политики безопасности поможет решить эти проблемы и автоматизировать доступ к данным на www.yoursite.com из клипа с yoursite.com.

Вот решение проблемы:

  1. Создайте новый текстовый файл с названием crossdomain.xml;
  2. Наполните его содержимым:
    <?xml version="1.0"?> 
    <!DOCTYPE cross-domain-policy 
      SYSTEM "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd"> 
    <cross-domain-policy> 
      <allow-access-from domain="www.yoursite.com" /> 
      <allow-access-from domain="yoursite.com" /> 
    </cross-domain-policy>
  3. Сохраните файл и закачайте его в корень сайта yoursite.com (т.е. так, чтобы файл был доступен по адресу "http://www.yoursite.com/crossdomain.xml").

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

Например, чтобы дать всем клипам с moock.org доступ к yoursite.com, XML на yoursite.com должен быть таким:

<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy 
  SYSTEM "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
  <allow-access-from domain="www.yoursite.com" />
  <allow-access-from domain="yoursite.com" />
  <allow-access-from domain="*.moock.org" />
</cross-domain-policy>

После этого все клипы с moock.org (включая www.moock.org, games.moock.org, и т.д.) получат доступ к данным с yoursite.com. (Заметьте, в файле политики можно использовать символ "*".)

Веб-сервисы типа amazon.com или google.com могут предоставлять доступ к своим данным любому Flash-клипу, используя такие конструкции:

<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy 
  SYSTEM "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
  <allow-access-from domain="*" />
</cross-domain-policy>

Если вы держите XMLSocket-сервер типа Unity, вам также не обойтись без полицейского файла, который разрешит клипам, загруженным с www.yoursite.com или yoursite.com подключаться к серверу. Файл с политиками должен быть загружен через HTTP-протокол с домена, на котором находится ваш XMLSocket-сервер. Например, если вы запустили сокет-сервер на moock.org, то нужно запустить на moock.org веб-сервер, в руте которого и хранить файл с политиками и полицейскими:

<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy 
  SYSTEM "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
  <allow-access-from domain="www.moock.org" />
  <allow-access-from domain="moock.org" />
</cross-domain-policy>

Без файла с политиками подключиться к серверу не удастся, например, сокет-сервер на moock.org не ответит клипу с www.moock.org.

Заметьте, что описанная политика безопасности не воспрещает обращаться к загруженному клипу из вашего кода. Этот аспект безопасности все еще контролируется свойствами System.security.allowDomain и новым System.security.allowInsecureDomain. Читайте Security Restrictions for Cross-Movie Scripting.

Кое-что можно узнать здесь:

См. также справку к Macromedia Flash 2004: "ActionScript Reference Guide > Working with External Data > Flash Player security features > About allowing cross-domain loading".

// via Colin

Ненавижу политику.

Писал Rost, 11 Сентябрь 2003 20:43

Найдены баги:

Да-а-а-а уж :((
если вы открыли свой холодильник не за ручку, то пива вы не получите... ... а на крышку унитаза надо вешать листок с паспортными данными ваших друзей...

geo - 13 Сентябрь 2003 3:40

Согласен.. Вот щас буду на нашем сайте это починять.. А то ведь для пугливого юзера это предупреждение все равно что шлагбаум. А ну стоять! Ни шагу дальше, а то поимеете проблемы с безопасностью..
Апробую, так скз, твой метод, Рост, на практике..

fix - 15 Сентябрь 2003 10:41

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

geo - 16 Сентябрь 2003 1:24

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

А в бете вообще кошмар был - на рабочем сайте вываливается окно "Невозможно скачать какой-то дата-файл с сайта" (проигнорить/уйти). Если сайт коммерческий, представьте сколько человек захотят проигнорировать ошибку и рискнуть заплатить деньги на этом сайте..

Щас хоть понятно стало откуда ноги растут и проблема устранена. Причем как 2 байта переслать. А представьте, сколько можно запросить у испуганного заказчика за апгрейд-лечение старого сайта ;) Макромедию наверно за это расцыловать надо?

fix - 16 Сентябрь 2003 10:20

>>Макромедию наверно за это расцыловать надо?
Даже лизнуть %)

AliluA - 20 Апрель 2004 4:45

засунуть в одно место их политику

Pablo - 28 Февраль 2005 19:29

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

:-(
Хотя Macromedia и правда всё до лампочки, видимо

Spectrum - 19 Июнь 2005 12:49



Это запись из категории 'Security'. 10 еще cвежих:

Архивы по категориям:

3D-18, Adobe AIR-30, Animation-1, Apache Ant-1, Architecture-1, ARP-1, Art-25, Articles-26, AS3-52, Books-7, Business-3, Cairngorm-2, CI-1, Classes-10, Coding-30, Community-113, Components-19, Contests-28, Cool-Job-5, Debug-18, Design-26, Development-84, EMO-1, Events-13, Extensions-2, FAQ-8, FDS-1, Flash and html-5, Flash Player-35, Flash Updates-8, Flash-scene-1, flash10-4, FlashLite-2, Flex-30, Flex 2-80, Flickr-1, FMS-1, FPUG-46, frameworks-1, Games-11, Good Job!-35, HaXe-14, Health-2, Humor-10, Ideas-13, JavaScript-1, Job-26, JSFL-8, Links-2, Linux-1, Maps-1, Math-8, Money-11, MXML-1, Open Source-15, Optimization-2, Patterns-2, Personalities-27, Politics-1, Preloading-3, Productivity-9, PureMVC-10, Pv3d-1, Rafpug-4, Red5-3, Remoting-11, Resources-21, Ruby-6, SAAS-1, Security-11, SEO-8, Silverlight-5, Sound-3, Strategy-120, Tamarin-1, Tools-113, Training-2, Trash-8, URAFPUG-13, Urgent-1, Usability-6, Video-6, VoIP-5, Wallop-1, Wishlist-2, Архив всех записей (большой)

За последние месяцы:

Июл 2008: Международная встреча разработчиков URAFPUG завершена, URAFPUG - трансляция студии Flex-фреймворка Mate, весь Июл

Июн 2008: Попытка предварительных выводов о встрече аниматоров, Онлайн трансляция встречи аниматоров в Донецке, весь Июн

Май 2008: Если 3D, то по-взрослому: официальный запрос в Adobe по поводу контроля над мип-маппингом. Нужна ваша поддержка!, В этом году «Russian Flash Awards» пройдет в «космическом стиле», весь Май

Апр 2008: Программирование под флэш платформу. Cтатья (местами спорная), Advanced Flash Components бесплатно раздает все свои AS2-компоненты, весь Апр

Мар 2008: Зарплаты программистов в 2007 году, FlashPhone как технология года? Технология года? В Рунете?, весь Мар

Фев 2008: ЙА ФПУГ — регистрация на первую встречу UAFPUG продолжается, Закулисы Flex и секрет успеха опенсорс-проекта, весь Фев





Примечания:
Статус документа
: в процессе
   2002-2007 Производство: Рост Прибыли · О проекте · Подписка на новости (RSS)