2010-09-19 106 views
1

我已经开始在as3中开发绘图应用程序。我想我可以集成一个cms并允许swf文件作为图形在运行时上传。关于第三方可能的恶意swf文件的potensial安全问题在这里是什么?SWF托管安全

我只是简单地将swf作为自定义的sprite类添加到遮罩的容器精灵。 这是否会打开一个洞来运行其他脚本(另一台服务器上的js?),或者以不安全的方式访问客户端的计算机?

我会很感激任何recomendations阅读和或建议/体验在这样的swf托管。我发现现在很多网站都在做这个,比如wonderfl和activeden。

+0

我编辑了我的答案 – 2010-09-21 20:23:42

回答

1

这是与XSS等效的ActionScript。您的域名将不再受Same Origin Policy的保护。攻击者可以利用此漏洞劫持会话ID(Cookie),破坏您的网站或将漏洞利用代码提供给访问您网站的任何浏览器。

+0

我必须重新阅读此文才能理解这个概念。我假设如果用户在应用程序中将swf作为图形上传,然后将其保存在服务器上。当另一个用户再次打开加载相同swf的应用程序时,默认情况下将不允许该swf跨域访问。 – imp 2010-09-21 02:35:11

+0

我猜如果我遵循这条道路,它确实会为另一个人开启另一个洞,但并不是这样就不需要特定的重大努力。我猜这种漏洞是Adobe处理的漏洞。尽管我可能仍然忽略了一些东西。您认为在另一个用户将swf图形加载到其客户端实例之前,服务器端扫描swf的病毒扫描程序可能是合适的吗? – imp 2010-09-21 02:38:32

+0

@ user332096跨域访问不起作用。这里的问题是您允许上传SWF文件然后执行。此SWF文件将在您的域的上下文中运行,并可能包含任何内容。病毒扫描程序可以确保该swf文件不会利用flash,但它可能仍然是一个非常简单的漏洞,它抓取“document.cookie”并将其传输到另一个域。只要作者是唯一能够访问他上传的swf文件的人,那么它就不能用于获取其他用户的cookie,并且这会显着限制影响。 – rook 2010-09-21 03:09:44

0

我认为,不要在服务器上保存一大堆SWF文件,最好是将您的绘图数据序列化,并让您的主SWF根据加载的数据重绘绘图。您仍然可以使用CMS /数据库来存储和管理这些数据。

编辑*

如果您需要加载SWF文件,看看Specifying loading context。也许还可以通读Loading Content

+0

不需要使用loadBytes来获取序列化的数据,是不是更不安全? – PatrickS 2010-09-19 04:02:21

+0

啊是的,如果他们只是图纸,那么将序列化图纸会很好。我希望使用swf作为矢量图形,用于应用程序画布中的复杂形状,有点像贴纸。 – imp 2010-09-21 02:31:59