Безопасность Flash. AllowDomain ()

У меня есть фильм Flash, загружая данные из внешнего URL. На самом деле это - RSS-ридер в баннере.

Все работает отлично, когда фильм Flash и URL данных находятся на том же домене. Однако, если фильм Flash находится на другом домене, безопасность Flash умирает.

В руководстве говорится, что я могу позволить доменную безопасность канавки. AllowDomain ()

system.Security.allowDomain("http://www.mydomain.abc/")
xmlData = new XML();
xmlData.ignoreWhite = true;
xmlData.onLoad = loadXML;
xmlData.load("http://www.mydomain.abc/content.php");

Но когда я встраиваю .swf в страницу HTML, данные не загрузятся. Какие-либо подсказки, как отладить или решить это?

6
задан Gerrit 16 April 2010 в 14:27
поделиться

2 ответа

Исправлено. Adobe Docs объясняет метод создания файла с именем crossdomain.xml в корне mydomain.abc

<?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.domain-of-swf.com" />
</cross-domain-policy>

Не используйте , потому что это позволит любому SWF-файлу в Интернете совершать звонки в ваш домен от имени ваших пользователей со всеми файлами cookie, прикрепленными к запросам. Это приведет к утечке личных данных, если ваш домен не хранит их или не использует файлы cookie / HTTP-аутентификацию.

3
ответ дан 8 December 2019 в 12:18
поделиться

Я думаю, вы неправильно понимаете цель метода. Как документы : скажем, allowDomain:

Позволяет SWF-файлам в идентифицированных доменах получать доступ к объектам и переменным в SWF-файле, который содержит {{1} } Вызов allowDomain ().

[...]

Вызов Security.allowDomain ("siteA.com"), siteB.swf дает siteA.swf разрешение на его создание сценария.

Таким образом, вызов, который вы делаете, позволяет swf-файлам на www.mydomain.abc выполнять скрипт для swf-файла с вызовом. Вы в основном говорите: «Я верю, что они меня правильно используют». Это не позволяет вам делать то, что вы пытаетесь сделать (загружать ресурсы из этого домена).

Не имеет смысла позволять клиентскому коду просто просить обойти междоменную безопасность так, как вы запрашиваете. Если все, что вам нужно сделать, это спросить, зачем вообще это правило?

Чтобы сделать то, что вы хотите, вы можете использовать файл crossdomain.xml на www.mydomain.abc, или прокси на стороне сервера. По сути, файл crossdomain.xml должен содержать такую ​​строку:

<allow-access-from domain="www.yourswfdomain.com" />

, где www.yourswfdomain.com - это домен для файла swf. Очевидно, это решение требует поддержки со стороны www.mydomain.abc.

Yahoo имеет информацию о настройке прокси на стороне сервера. Он нацелен на XMLHttpRequest, но те же принципы применимы и к Flash.

13
ответ дан 8 December 2019 в 12:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: