如何安全地嵌入任何Flash文件(swf)?

5
我希望允许用户在他们的文章中嵌入自己的Flash动画。通常,实际文件托管在某些免费图像托管网站上。除非用户点击播放按钮(以便页面加载时没有任何自动播放),否则我不会加载flash。我知道人们可以制作一些非常恶心的flash内容,但我找不到有关flash应用可能对观看者造成的潜在严重破坏的任何信息。
从互联网上嵌入任何flash文件是否不安全?如果是这样,我如何让用户嵌入无害的动画但仍然阻止有害的应用程序?
编辑:
据我所了解,最明显的威胁是actionscript将您重定向到恶意网站。
Adobe says 您可以设置allowScriptAccess=neverallowNetworking=none,然后swf不应该访问其外部任何内容。 这会解决我所有的问题吗?
6个回答

3

当嵌入来自未知来源的SWF文件时,最好的做法是在Loader上添加一个遮罩,以防加载的SWF占用更多的屏幕空间。

以下是伪代码实现:

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

3
Flash有一些很好的安全措施。允许用户上传swf并嵌入到您的网站是不安全的,基本上就是为XSS攻击做准备。
然而,允许它们进行热链接不应该成为问题。SWF将被锁定在托管它的域名上,并且不允许调用该空间之外的URL。
它仍将对“恶意链接”(我确定有一个正确的术语),也就是说,将常规链接放置到yoursite.com/admin/deleteallpages.php,然后尝试“作为”您加载。但它将无法以任何方式使用此数据,它基本上与普通链接相同,我猜现代CMS受到此类攻击的保护。
您可以通过在不同的子域上托管Flash来获得相同的保护,因为Flash认为这与完全不同的域名相同。

“恶意链接”被称为 CSRF,即跨站请求伪造。 - Bart van Heukelom

2
实际上有不止一个选项。
为了完全安全,设置allowScriptAccess=never和allowNetworking=none,那么swf将无法访问其外部的任何内容。
注意:allowNetworking仅在Flash Player 9中存在(它是针对各种myspace蠕虫创建的),因此您需要使用SWF Object以确保只有具有正确flash播放器版本或更高版本的用户加载flash。
如果您想启用像YouTube视频之类的东西,则无法将allowNetworking设置为“none”。幸运的是,此字段有一种中间级别的安全性-“internal”,它允许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



1

0

是的,它是不安全的。

没有简单的方法允许它。你可以有一个域名白名单,允许通过 YouTube、Hulu 等,但白名单本质上是繁琐的 - 你需要不断更新。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接