Бесплатно скачать Adobe Flash Player

Авария на сайте: чтобы починить, нужен файл с полицейскими (новая политика безопасности в 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



Подписаться на новости (RSS)




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