Security policy. Error #2044: Unhandled securityError:. text=Error #2048: Security sandbox violation.

620 views
Skip to first unread message

Дмитрий Пилипенко

unread,
Nov 13, 2008, 8:40:06 AM11/13/08
to ruF...@googlegroups.com
Всем добрый день. Итак, вопрос:
существует SWF на домене B, который пытается загрузить XML с домена А.
Проблема решаема, или crossdomain.xml или строчкой кода
Security.allowDomain("*").
Но проблема вот в чём, что сервер пренебрегает интересами Флеша, и не
смотрит на кроссдомен. Чем может быть это вызвано, и какие решения даной
проблемы?
Спасибо.

Alexander Negoda

unread,
Nov 13, 2008, 3:30:40 PM11/13/08
to ruF...@googlegroups.com
-----------------------------
flashpolicy.xml
------------------------------
<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM "/xml/dtds/cross-domain-policy.dtd">

<!-- Policy file for xmlsocket://socks.example.com -->
<cross-domain-policy>

   <!-- This is a master socket policy file -->
   <!-- No other socket policies on the host will be permitted -->
   <site-control permitted-cross-domain-policies="master-only"/>

   <!-- Instead of setting to-ports="*", administrator's can use ranges and commas -->
   <!-- This will allow access to ports 123, 456, 457 and 458 -->
   <allow-access-from domain="*" to-ports="*" />

</cross-domain-policy>



----------------------------------
flashpolicyd.pl
--------------------------------
#!/usr/bin/perl
#
# policyd.pl
# Simple socket policy file server
#
# Usage: policyd.pl [-port=N] -file=FILE
# Logs to stdout
#

use strict;
use Socket;

my $NULLBYTE = pack( 'c', 0 );

my $port = 843;
my $filePath;
my $content;

### READ ARGS

while ( my $arg = shift @ARGV )
{
    if ( $arg =~ m/^--port=(\d+)$/ )
    {
        $port = $1;
    }
    elsif ( $arg =~ m/^--file=(.*)/ )
    {
        $filePath = $1;
    }
}

unless ( $filePath )
{
    die "Usage: policyd.pl [--port=N] --file=FILE\n";
}

### READ FILE

-f $filePath or die "No such file: '$filePath'\n";
-s $filePath < 10_000 or die "File probably too large to be a policy file: '$filePath'\n";

local $/ = undef;
open POLICYFILE, "<$filePath" or die "Can't open '$filePath': $!\n";
$content = <POLICYFILE>;
close POLICYFILE;

$content =~ m/cross-domain-policy/ or die "Not a valid policy file: '$filePath'\n";

### BEGIN LISTENING

socket( LISTENSOCK, PF_INET, SOCK_STREAM, getprotobyname( 'tcp' ) ) or die "socket() error: $!";
setsockopt( LISTENSOCK, SOL_SOCKET, SO_REUSEADDR, pack( 'l', 1 ) ) or die "setsockopt() error: $!";
bind( LISTENSOCK, sockaddr_in( $port, INADDR_ANY ) ) or die "bind() error: $!";
listen( LISTENSOCK, SOMAXCONN ) or die "listen() error: $!";

print STDOUT "\nListening on port $port\n\n";

### HANDLE CONNECTIONS

while ( my $clientAddr = accept( CONNSOCK, LISTENSOCK ) )
{
    my ( $clientPort, $clientIp ) = sockaddr_in( $clientAddr );
    my $clientIpStr = inet_ntoa( $clientIp );
    print STDOUT "Connection from $clientIpStr:$clientPort\n";
   
    local $/ = $NULLBYTE;
    my $request = <CONNSOCK>;
    chomp $request;

    if ( $request eq '<policy-file-request/>' )
    {
        print STDOUT "Valid request received\n";
    }
    else
    {
        print STDOUT "Unrecognized request: $request\n\n";
        close CONNSOCK;
        next;
    }

    print CONNSOCK $content;
    print CONNSOCK $NULLBYTE;
    close CONNSOCK;

    print STDOUT "Sent policy file\n\n";
}

# End of file.




flashpolicy.xml и flashpolicyd.pl надо положить рядом и запустить следующий файл:


--------------------------------------------
start.sh
--------------------------------------------
perl ./flashpolicyd.pl --file=./flashpolicy.xml --port=843 &
-----------------------------------------------------------------------------------

В апп пишешь:

Security.loadPolicyFile("xmlsocket://foo.com:843");

Пожалуй, самый простой способ решения задачи crossdomain-а, если апп и данные лежат на разных серверах и портах.
Вот здесь http://www.google.com/url?sa=t&source=web&ct=res&cd=5&url=http%3A%2F%2Fgroups.google.com%2Fgroup%2Fruflex%2Fbrowse_thread%2Fthread%2F6ab72c19c403a23c&ei=e4scSeOnHoie1waXhJjoBg&usg=AFQjCNFcd1g_2AhPZfMvDDIC-mPCgGCb0Q&sig2=D-0ljUxMTNi3NrG3a76QPg 
я задавал вопросы по теме.
Решил задачу только вышеприведённым способом.

Flop Serg

unread,
Nov 13, 2008, 4:53:11 PM11/13/08
to ruF...@googlegroups.com
Александр не вводи в заблуждение )

то что ты пытаешься объяснить очень подробно рассказал

Peleus Uhley из Адобов вот в этой статье

Но все это отностится искоючительно к сокетным политикам безопасности.


 
 
как я понимаю Дмитрий не использует никаких сокетов
но что он хочет я тоже не понимаю.
Если Флешка с домена А хочет загрузать Данные с Домена Б, то достаточно только одного crossdomain.xml в корне Домена Б
Security.allowDomain("*"). вообще не причем! это для того чтобы флешки которые текущая загружает с домена * могли общатся с ней
А как сервер может "принебрегать интересами Флеша" вообще не понятно...
сервер только отдает политики в виде этого файла crossdomain.xml , все остальное решает сам плеер

Вообще на Адобах все подробно расписанно про политики безопасности, на английском.. например вот



Flop Serg

unread,
Nov 13, 2008, 5:07:34 PM11/13/08
to ruF...@googlegroups.com
еще чуть чуть добавлю, многие ставят * там где необходимо отметить нужные сервера.

А это можно сказать неплохая дырища...

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

Alexander Negoda

unread,
Nov 13, 2008, 5:28:08 PM11/13/08
to ruF...@googlegroups.com

как я понимаю Дмитрий не использует никаких сокетов
но что он хочет я тоже не понимаю.

Я не стал разбираться чего конкретно хочет Дмитрий и привёл вариант, который сработает при любых условиях ;)
 

Дмитрий Пилипенко

unread,
Nov 14, 2008, 2:40:50 AM11/14/08
to ruF...@googlegroups.com
Спасибо ребята, что вы почли своим присутствие стой непонятную тему.

> то достаточно только одного crossdomain.xml в корне Домена Б

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

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

Спасибо.

Flop Serg

unread,
Nov 14, 2008, 3:29:16 AM11/14/08
to ruF...@googlegroups.com
речь, о том что именно определенный сервер, просто не смотрит на кроссдомен.


ээээ... как ты это определил что сервер не смотрит на кроссдомен?
что ты имеень ввиду под этими словами ?


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


Боюсь, что людей которые понимают что ты имеешь ввиду, крайне мало...
Попробуй сформулировать свой вопрос подругому.

Ivan Dembicki

unread,
Nov 14, 2008, 3:40:21 AM11/14/08
to ruF...@googlegroups.com
Hello Дмитрий,

> речь, о том что именно определенный сервер, просто не смотрит на кроссдомен.

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

Это крайне сомнительное предположение,
его легко проверить тебе самому, даже если нет
инструментов снифа трафика: ты можешь почисть
кэш в эксплорере и затем зайти на твою флэшку.
После чего посмотреть на кэш.

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

--
iv
http://www.bezier.ru
http://bezier.googlecode.com

Дмитрий Пилипенко

unread,
Nov 14, 2008, 4:07:41 AM11/14/08
to ruF...@googlegroups.com

> ээээ... как ты это определил что сервер не смотрит на кроссдомен?
> что ты имеень ввиду под этими словами ?
Такое ощущение, что серверу всеравно, что на нем размещен кроссдомен.
Флеш выдает одинаковую ошибку в обоих случаях.

Аналогично, протестил на других серверах, там все работает.

Дмитрий Пилипенко

unread,
Nov 14, 2008, 4:14:58 AM11/14/08
to ruF...@googlegroups.com
Hello Ivan Dembicki,

Посмотрел через Firebug, запрос идет, но положительно результата далее
не наблюдается.
Пока crossdomain.xml выглядит так:

<?xml version="1.0"?>

<!DOCTYPE cross-domain-policy SYSTEM "http://www.adobe.com/xml/dtds/cross-domain-policy.dtd">

<cross-domain-policy>

<site-control permitted-cross-domain-policies="all"/>

<allow-access-from domain="*"/>

</cross-domain-policy>

Ivan Dembicki

unread,
Nov 14, 2008, 4:30:36 AM11/14/08
to ruF...@googlegroups.com
Hello Дмитрий,

> Посмотрел через Firebug, запрос идет, но положительно результата далее
> не наблюдается.

- ты можешь говорить конкретнее?

Что значит не наблюдается положительного результата?
- сервка не отдаёт crossdomain?
- сервка отдаёт crossdomain, но флэшка не работает?

Flop Serg

unread,
Nov 14, 2008, 4:35:21 AM11/14/08
to ruF...@googlegroups.com
Такое ощущение, что серверу всеравно, что на нем размещен кроссдомен.
Флеш выдает одинаковую ошибку в обоих случаях.

так и есть серверу абсолютно наплевать все файлы которые у него есть он их просто отдает клиенту по запросу


Посмотрел через Firebug, запрос идет, но положительно результата далее
не наблюдается.


т.е. как я понимаю сервер не отдает тебе этот кроссдомен файл? ошибка 404 ?
другими словами если ты набираешь в строке браузера http://сервер/crossdomain.xml опять 404 ?
значит НЕТУ такого файла на сервере в рутовской директории, ты его закачал не в рутовскую директорию а куданить еще.
узнай где он там есть и грузи его от туда  Security.loadPolicyFile(путь на твой файл)
флешплеер всеравно в корень обратится, но потом загрузит из кастомного локэйшона и применит политики.

Дмитрий Пилипенко

unread,
Nov 14, 2008, 4:33:14 AM11/14/08
to ruF...@googlegroups.com
Hello Ivan Dembicki,
не наблюдается.

>
> - ты можешь говорить конкретнее?
>
> Что значит не наблюдается положительного результата?
> - сервка не отдаёт crossdomain?
> - сервка отдаёт crossdomain, но флэшка не работает?

=)
Сервак отдает crossdomain, но во флеше требуемый xml все равно не
загружается.

Дмитрий Пилипенко

unread,
Nov 14, 2008, 4:34:59 AM11/14/08
to ruF...@googlegroups.com
> т.е. как я понимаю сервер не отдает тебе этот кроссдомен файл? ошибка
> 404 ?
> другими словами если ты набираешь в строке браузера
> http://сервер/crossdomain.xml <http://xn--b1afb6bcb/crossdomain.xml>
> опять 404 ?
Кроссдомен лежит в руте, просто проблема в том, что флеш всеравно не
грузит хмл.

Flop Serg

unread,
Nov 14, 2008, 4:46:13 AM11/14/08
to ruF...@googlegroups.com

Кроссдомен лежит в руте, просто проблема в том, что флеш всеравно не
грузит хмл.

а вот этого не может быть)
здесь причина может быть только в какомнить твоем локальном фаерволе, или фаерволе на гетвее, который блокирует этот сервер
и флешка не может получить эту политику

Дмитрий Пилипенко

unread,
Nov 14, 2008, 4:53:09 AM11/14/08
to ruF...@googlegroups.com
Flop Serg пишет:

>
>
> Кроссдомен лежит в руте, просто проблема в том, что флеш всеравно не
> грузит хмл.
>
>
> а вот этого не может быть)
Могу дать адресс на рутовый кроссдомен, и на флешку. Она у тебя выдаст
нашу тему)

Flop Serg

unread,
Nov 14, 2008, 4:57:59 AM11/14/08
to ruF...@googlegroups.com
Могу дать адресс на рутовый кроссдомен, и на флешку. Она у тебя выдаст
нашу тему)
довай

Ivan Dembicki

unread,
Nov 14, 2008, 4:58:09 AM11/14/08
to ruF...@googlegroups.com
Hello Дмитрий,

> Могу дать адресс на рутовый кроссдомен, и на флешку. Она у тебя выдаст
> нашу тему)

- с этого надо было начинать

Дмитрий Пилипенко

unread,
Nov 14, 2008, 5:02:59 AM11/14/08
to ruF...@googlegroups.com

Flop Serg

unread,
Nov 14, 2008, 5:32:47 AM11/14/08
to ruF...@googlegroups.com
try here http://www.freejewelry.com/banners.html
у меня все работает )

Дмитрий Пилипенко

unread,
Nov 14, 2008, 5:33:53 AM11/14/08
to ruF...@googlegroups.com
Flop Serg пишет:

> try here http://www.freejewelry.com/banners.html
> у меня все работает )
Прочитай еще раз пост выше, будь внимательнее и увидишь другую ссылку.
А по этой у всех работает, у кого установлен флеш плеер.

roman...@gmail.com

unread,
Nov 14, 2008, 6:20:25 AM11/14/08
to ruFlash
У знакомого аналогичная проблема, только там не грузится(или не
показывается) флешка, если набрать адрес с www то флешка грузится
(показывается), в чем может быть причина?

Flop Serg

unread,
Nov 14, 2008, 6:53:30 AM11/14/08
to ruF...@googlegroups.com
такс попробовал в ИЕ набрать http://www.freejewelry.com/crossdomain.xml
он нам говорит файл не найден...
вот для сравнения дампы

c twitter.com ----------------------------------------

Send: Return Code: 0x00000000
GET /crossdomain.xml HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-excel, application/msword, application/x-shockwave-flash, */*
Accept-Language: ru
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727)
Host: twitter.com
Connection: Keep-Alive

Receive: Return Code: 0x00002733

Receive: Return Code: 0x00000000
HTTP/1.0 200 OK
Date: Fri, 14 Nov 2008 11:40:49 GMT
Server: hi
ETag: "48f66aee-19c-1e08404"
Last-Modified: Wed, 15 Oct 2008 22:13:02 GMT
Content-Type: text/xml
Content-Length: 412
Cache-Control: max-age=300
Expires: Fri, 14 Nov 2008 11:45:49 GMT
Connection: close

<?xml version="1.0" encoding="UTF-8"?>
<cross-domain-policy xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.adobe.com/xml/schemas/PolicyFile.xsd">
    <allow-access-from domain="*.twitter.com" />
    <site-control permitted-cross-domain-policies="master-only"/>
  <allow-http-request-headers-from domain="*.twitter.com" headers="*" secure="true"/>
</cross-domain-policy>

Receive: Return Code: 0x00000000

----------------------------------------------------------

c freejewelry.com ----------------------------------
Send: Return Code: 0x00000000
GET /crossdomain.xml HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-excel, application/msword, application/x-shockwave-flash, */*
Accept-Language: ru
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727)
Host: www.freejewelry.com
Connection: Keep-Alive
Cookie: PHPSESSID=6qfq1nglrc1g0g20ak3slt8hp2; __utma=144328546.4009177260416898600.1226662127.1226662127.1226662127.1; __utmb=144328546.1.10.1226662127; __utmc=144328546; __utmz=144328546.1226662127.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none)

Receive: Return Code: 0x00002733

Receive: Return Code: 0x00000000
HTTP/1.1 200 OK
Date: Fri, 14 Nov 2008 11:24:56 GMT
Server: Apache/2.2.3 (Red Hat)
X-Powered-By: PHP/5.1.6
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Content-Length: 250
Connection: close
Content-Type: 1

п»ї<?xml version="1.0"?>

<!DOCTYPE cross-domain-policy SYSTEM "http://www.adobe.com/xml/dtds/cross-domain-policy.dtd">

<cross-domain-policy>
<site-control permitted-cross-domain-policies="all"/>
<allow-access-from domain="*"/>
</cross-domain-policy>

---------------------------------------------

прошу обратить внимание на хедер Content-Type, а так-же на непонятными сиволами перед самой хмлкой (наверное это бом сигнатура )

Alexander Negoda

unread,
Nov 14, 2008, 7:07:48 AM11/14/08
to ruF...@googlegroups.com
Дык это же разные домены http://www.freejewelry.com/banners.html и http://freejewelry.com/banners.html
www вовсе не обязательно должен смотреть туда же куда и без www. Это может быть другой сервер. У тебя в апаче (или как там твой сервер называется) serverName стоит www.freejewelry.com, а алиас freejewelry.com.
Вот твоя ошибка :
Error #2044: Необработанный securityError:. text=Error #2048: Нарушение изолированной среды: http://freejewelry.com/deploy/banner_125x125.swf не может загрузить данные из http://www.freejewelry.com/activeitem.xml/?id=1.
И политика грузится с www.

2008/11/14 Дмитрий Пилипенко <dim...@gmail.com>

Alexander Negoda

unread,
Nov 14, 2008, 7:08:55 AM11/14/08
to ruF...@googlegroups.com
И crossdomain.xml грузится у меня 3 раза. Почему?

Дмитрий Пилипенко

unread,
Nov 14, 2008, 7:15:05 AM11/14/08
to ruF...@googlegroups.com
Alexander Negoda пишет:

> И crossdomain.xml грузится у меня 3 раза. Почему?
Что там с настройками Мне вообще непонятно, за нее отвечает вообще
отдельная контора.

> Error #2044: Необработанный securityError:. text=Error #2048:
Нарушение изолированной среды:
http://freejewelry.com/deploy/banner_125x125.swf не может загрузить
данные из http://www.freejewelry.com/activeitem.xml/?id=1.
И политика грузится с www.

И каким образом сделать, что бы сначала грузилась кроссдомен, а потом
уже флеш?

Дмитрий Пилипенко

unread,
Nov 14, 2008, 7:32:12 AM11/14/08
to ruF...@googlegroups.com
Flop Serg пишет:

> прошу обратить внимание на хедер Content-Type, а так-же на непонятными
> сиволами перед самой хмлкой (наверное это бом сигнатура )
Да, это бом-сигнатура. Её больше нету.. но это, к сожалению, не меняет
позиции.

Flop Serg

unread,
Nov 14, 2008, 8:00:12 AM11/14/08
to ruF...@googlegroups.com


И каким образом сделать, что бы сначала грузилась кроссдомен, а потом
уже флеш?

Никак!!! Флеш при обращении в другой домен (не тот с которого загрузился он сам) запрашивает у этого домена политики crossdomain.xml
У тебя эти политики не доходят во флеш!
файл crossdomain.xml грузится грузится но не загружается .
- во флешку не попадает!!!
- а может поподает но флеш распознать не может (Content-type непонятный)
- а может  распарсить хмлку не может (из за бом сигнатуры) // это отменяется
- может ждет EOF а он не приходит (опять же настройки апача)

я тебе показал дампы.

ковыряйся в MIME типах
можно задать DefaultType в text/html
попробуй AddType text/html xml




Reply all
Reply to author
Forward
0 new messages