`
wgcode
  • 浏览: 593367 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

绕开AS3安全沙箱 跨域加载SWF

 
阅读更多

AS3的安全沙箱的确是让人很无奈,本篇文章仅用于解决一个特定的问题,即A服务器上的SWF文件通过http访问B服务器上的SWF文件,此时即使B服务器上设置了crossdomain.xml,也无济于事,B服务器上被加载的SWF文件除必须的crossdomain.xml外,还必须使用Security.allowDomain("*")才能消除安全沙箱(注:我加载的是AS3编写的SWF)。

对于无法使用Security.allowDomain("*")的SWF文件,如AVM1的SWF或我们无法编辑被加载的SWF时,我们就可以使用下面这种方式。


使用Loader加载外部SWF文件的时候,如果不出现错误,文件是可以成功加载进来的,只不过是在使用该SWF文件时,flash会报安全沙箱错误,我们可以使用一种方式绕过该安全沙箱,具体操作如下:

  1、首先使用一个Loader加载一个外部SWF,监听Loader.contentLoaderInfo的Event.COMPLETE事件; 

  2、加载成功后,先暂时不使用这个加载成功的Loader,而是另写一个Loader,使用Loader.loadBytes()来加载第一个Loader的contentLoaderInfo.bytes;


  3、在第二个Loader加载成功后,就可以使用被加载的SWF文件了; 


  示例代码:

public function load():void  
{   
    // 第一个Loader用于使用url加载文件   
    var loader1:Loader = new Loader();   
    loader1.contentLoaderInfo.addEventListener(Event.COMPLETE, loader1Complete);   
    loader1.load(new URLRequest("文件url"));   
}   
  
private function loader1Complete(event:Event):void  
{   
    var loaderinfo:LoaderInfo = event.target as LoaderInfo;   
    // 第二个Loader用于加载第一个Loader加载进来的bytes   
    var loader2:Loader = new Loader();   
    loader2.contentLoaderInfo.addEventListener(Event.COMPLETE, loader2Complete);   
    loader2.loadBytes(loaderinfo.bytes);   
}   
  
private function loader2Complete(event:Event):void  
{   
    // 在这里可以使用被加载进来的文件了   
    // event.target as DisplayObject   
}


注意:使用上面的方式,也应该注意B服务器上有crossdomain.xml文件 
  附:Flash Player的安全模型

您可以加载来自任何可访问源的内容。 


如果执行调用的 SWF 文件位于网络沙箱中并且要加载的文件是本地的,则不允许加载。 



如果加载的内容为用 ActionScript 3.0 编写的 SWF 文件,那么除非可以通过调用加载的内容文件中的 System.allowDomain() 或 System.allowInsecureDomain() 方法来允许跨脚本排列,否则另一个安全沙箱中的 SWF 文件不能对它执行跨脚本操作。

如果被加载的内容为 AVM1 SWF 文件(用 ActionScript 1.0 或 2.0 编写),则 AVM2 SWF 文件(用 ActionScript 3.0 编写)不能对它执行跨脚本操作。但是,可以通过使用 LocalConnection 类在两个 SWF 文件之间实现通信。


如果被加载的内容为图像,则除非该 SWF 文件的域包含在该图像原始域的跨域策略文件中,否则安全沙箱之外的 SWF 文件无法访问其数据。 


在只能与本地文件系统的内容交互的沙箱中的影片剪辑不能对只能与远程内容交互的沙箱中的影片剪辑使用脚本,反之亦然。

分享到:
评论

相关推荐

    as3 安全沙箱 处理办法

    在AS3中,如果跨沙箱通信是必要的,例如从网络加载的SWF尝试访问本地文件,那么需要处理安全策略。`socket-policy.xml`文件就是这样的一个策略文件,用于设置Flash Player的Socket政策,允许特定的网络连接。 ...

    AS3.0安全沙箱 843策略文件

    这是个通用类,里面包含了处理843端口的安全沙箱问题以及socket基本的向服务器send资源问题。 请求方式是,先发整形,然后发id长度,再发id(String) 得到的资源是先得到字符长度,再得到字符串。这个是和后退约定的...

    Flash加载swf文件的沙箱问题

    当你试图从一个SWF加载另一个SWF时,Flash Player会根据加载的来源和目标SWF的沙箱类型来决定是否允许此操作。例如,一个运行在网络沙箱中的SWF文件试图加载本地沙箱中的SWF文件时,通常会被禁止,除非用户明确给予...

    flash安全沙箱汇总

    在IT行业中,安全沙箱是一种重要的安全机制,尤其在Flash技术中扮演着核心角色。Flash安全沙箱的主要目的是为了限制并隔离运行的Flash内容,防止它们对用户系统造成潜在的危害。下面将详细介绍Flash安全沙箱的基本...

    FLEX安全沙箱实用指南

    ### FLEX安全沙箱实用指南 #### 一、引言 在进行FLEX开发时,了解和掌握FLEX的安全沙箱机制对于确保应用程序的安全性至关重要。本文将详细介绍FLEX安全沙箱的相关概念及其应用场景,帮助开发者更好地理解如何在...

    java和as3 socket通信 解决安全沙箱问题

    总结来说,Java和AS3间的Socket通信涉及创建服务器和客户端Socket实例,处理数据流,并解决Flash Player的安全沙箱限制。通过合理的编程实践和配置,你可以实现可靠的跨平台通信,从而构建高性能的实时应用。

    全面认识Flex安全沙箱

    Flex安全沙箱是Adobe Flex应用程序在运行时遵循的一套安全机制,旨在保护用户的数据和系统安全。这个概念是在Flex 4之后尤其受到关注,因为当时在Internet Explorer中出现了与安全沙箱相关的挑战。沙箱模型类似于...

    AS与java socket通讯解决安全沙箱

    在这个场景中,我们关注的是ActionScript(AS)与Java之间的Socket通信,以及如何在面临安全沙箱限制时找到解决方案。Socket编程是实现客户端-服务器通信的基础,它允许两个或多个应用程序通过网络交换数据。 首先...

    Flash课件制作教程-加载SWF文件

    5. **安全和沙箱模型**:加载SWF文件时,需要注意Flash的安全模型,包括同一域限制和跨域策略文件。确保被加载的SWF与主文件在同一域或有正确的跨域策略文件,以避免安全错误。 6. **资源管理**:加载的SWF文件作为...

    flash 安全沙箱处理集合

    在本知识集中,我们将深入探讨AS3(ActionScript 3.0)中的安全沙箱处理,以及如何解决相关问题。 1. **AS3安全沙箱类型** AS3中的安全沙箱主要有三种:`Local with Network`、`Local without Network`和`Remote`...

    加载外部swf

    4. **安全沙箱与跨域问题**:当加载的SWF文件不在同一个域下时,可能会遇到安全沙箱限制。确保目标SWF文件包含正确的跨域策略文件(crossdomain.xml),以允许其他域加载该内容。 5. **处理加载的内容**:当SWF文件...

    ArcGIS API for Flex开发WebGIS中的安全沙箱问题

    在WebGIS开发中,安全沙箱主要指的是Flash Player的安全限制,它将Flash内容限制在其被加载的源(即SWF文件所在的域)内,以防止恶意代码跨域访问敏感信息。这种机制被称为“安全沙箱”,分为本地沙箱和网络沙箱两种...

    ActionScript 3.0安全沙箱及相关问题资料

    3. **网络沙箱**:网络沙箱允许SWF文件进行不受限制的网络通信,但禁止访问本地文件系统。这种沙箱是为在线应用设计的,如流媒体视频和游戏。 安全沙箱问题通常涉及到跨域通信,即一个沙箱中的内容试图与另一个沙箱...

    单个SWF文件loading加载详解

    2. 性能优化:大型SWF加载可能导致性能问题,考虑分块加载或使用位图缓存来改善用户体验。 3. 错误处理:添加错误监听器以处理加载失败的情况,确保程序的健壮性。 六、高级应用 1. 参数传递:通过URL参数传递数据...

    java ,c#,delphi 解决flash安全沙箱问题

    综上所述,处理 Flash 安全沙箱问题涉及理解沙箱模型、设置跨域策略、实现安全通信接口、管理权限、代码签名、异常处理以及遵循安全编码实践等多个方面。开发者需要在 Java, C# 和 Delphi 中综合运用这些技术来创建...

    在Flex中发布地图 程序报错 SecurityError: Error #2048: 安全沙箱冲突,只需要下载添加这个就可以

    但是当发布时,访问就错了,提示SecurityError: Error #2048: 安全沙箱冲突:http://localhost:8086/index.swf 不能从 http://www-c8d8bc651c4/ArcGIS/rest/services/zhengzhou/MapServer?f=json 加载数据 ...

Global site tag (gtag.js) - Google Analytics