Как безопасно встроить любой флеш-файл (swf)?

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

Небезопасно встраивать просто любой флеш-файл из интернета? Если да, как я могу позволить пользователям встраивать невинные анимации, но при этом не допускать вредоносных приложений?

редактировать:

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

Adobe говорит, что вы можете установить allowScriptAccess = never и allowNetworking = none, и swf не должен иметь доступа ни к чему, кроме себя. Это решит все мои проблемы?


person dsims    schedule 04.09.2008    source источник


Ответы (6)


У Flash есть некоторые изящные меры безопасности. Разрешать пользователям загружать SWF-файлы на ваш сайт и встраивать их небезопасно, вы в основном настраиваете себя для XSS-атаки.

Однако разрешить им хотлинк не должно быть проблемой. SWF-файл будет заблокирован для домена, на котором он размещен, и ему не разрешено вызывать URL-адреса за пределами этого пространства.

Он по-прежнему будет открыт для «злых ссылок» (я уверен, что для них есть подходящее слово), и под этим я подразумеваю наличие регулярных ссылок на yoursite.com/admin/deleteallpages.php, которые он пытается загрузить «как» вы . Однако он не сможет использовать эти данные каким-либо образом, это будет в основном то же самое, что и обычная ссылка, и я предполагаю, что современные cms защищены от такого типа атак.

Вы можете получить такую ​​же защиту, разместив свои флеш-накопители на другом поддомене, поскольку flash считает его совершенно другим доменом.

person grapefrukt    schedule 04.09.2008
comment
злые ссылки называются CSRF, подделкой межсайтовых запросов. - person Bart van Heukelom; 10.12.2010

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

Псевдокод для этого:

var maskSpr : Sprite = new Sprite();
maskSpr.graphics.beginFill();
maskSpr.graphics.drawRect(0,0,safeWidth,safeHeight);
maskSpr.graphics.endFill();
myLdr.mask = maskSpr;
person RickDT    schedule 09.09.2008

На самом деле существует несколько вариантов.

Для полной безопасности установите allowScriptAccess = never и allowNetworking = none, и swf не будет иметь доступа ни к чему, кроме себя.

ПРИМЕЧАНИЕ: allowNetworking есть только в Flash Player 9 (он был создан в ответ на различных червей myspace), поэтому вам нужно будет использовать SWF-объект, чтобы гарантировать, что только пользователи с правильной версией flash player или лучше загружают flash.

Если вы хотите включить такие вещи, как видео на YouTube, вы не можете установить для allowNetworking значение «none». К счастью, для этого поля существует промежуточный уровень безопасности - «внутренний», который позволяет SWF взаимодействовать со своим размещенным доменом.

Также обратите внимание, что вам лучше не иметь на своем сайте файл crossdomain.xml - подробнее об этих опасностях см. здесь и в других местах.

Вот некоторые другие сайты, которые упоминаются другими ответами, которые более подробно рассматриваются:

http://www.adobe.com/devnet/flashplayer/articles/secure_swf_apps_04.html

http://blogs.adobe.com/stateofsecurity/2007/07/how_to_restrict_swf_content_fr_1.html

person Community    schedule 12.05.2009

В качестве примера в Drupal есть сценарий, показывающий, что разрешение на использование флэш-содержимого от пользователей может быть проблемой безопасности.

person RedWolves    schedule 04.09.2008

Adobe сообщает, что вы можете установить allowScriptAccess = never и allowNetworking = none, и swf не должен иметь доступа ни к чему, кроме самого себя. Хотя allowNetworking есть только в Flash Player 9, поэтому пользователи с более ранними версиями Flash все равно будут уязвимы для некоторых эксплойтов.

Создание более безопасных веб-приложений SWF: элементы управления безопасностью в HTML-коде

Как ограничить содержимое SWF из HTML

person dsims    schedule 08.09.2008

Да, это небезопасно.

Нет простого способа разрешить это. У вас может быть белый список доменов, который разрешает доступ YouTube, Hulu и т. Д., Но белый список по своей сути сложен - вы будете постоянно обновлять.

person ceejayoz    schedule 04.09.2008