flex安全沙箱
2011年02月22日
不同域swf交互需要安全域文件和Security.allowDomain(“*“);
安全沙箱包括:远程沙箱与本地沙箱。其实这个沙箱模型类似与浏览器中的同源策略。在同一域内的资源会被放到一个安全组下,这个安全组就被称为安全沙箱了。
在深入了解沙箱之前先得明确Flash Player的权限控制(我还是按照Flash CS3上的中文官方文档的名词来划分吧):
1、管理用户控制:
这指系统的最高权限用户,win下的Administrator,linux下的root等。有两种类型的控制:
a)、mms.cfg文件:数据加载、隐私控制、Flash Player更新、旧版文件支持、本地文件安全性、全屏模式等。
b)、”全局 Flash Player 信任”目录:当某些SWF文件被指定到这个受信任的目录下时,这些SWF 文件会被分配到受信任的本地沙箱。它们可以与任何其它SWF文件进行交互,也可以从任意位置(远程或本地)加载数据。该信任目录的默认路径 为:C:\windows\system32\Macromed\Flash\FlashPlayerTrus t。
2、用户控制:
相对于第1种,这里的用户是指普通用户。有这三种类型的控制:
a)、摄像头与麦克风设置:还记得ClickJacking的那个Flash DEMO么?
b)、共享对象存储设置:就是那个SharedObject了。
c)、 相对与”全局 Flash Player 信任”目录,用户权限这也有个”用户 Flash Player 信任”目录。默认路径:C:\Documents and Settings\JohnD\Application Data\Macromedia\Flash Player\#Security\FlashPlayerTrust。
3、Web 站点控制(跨域策略文件):
就是家喻户晓的crossdomain.xml文件了,现在的安全策略是该文件只能存放在站点根目录下了,文件格式如:
随便看个例子:http://fanfou.com/crossdomain.xml。通过该文件的配置可以提供允许的域跨域访问本域上内容的权限。
4、作者(开发人员)控制:
开发者可以通过编码(在AS脚本中)指定允许的安全控制权限,如:
Security.allowDomain(“www.xeye.us“);
当然都支持通配符*了。这个通配符真是个瘟神,程序员可得谨慎使用,以免添加不必要的安全风险。
好,Flash Player的权限控制明了之后,现在可以来看看安全沙箱了。
1、远程沙箱:
这个远程沙箱控制着远程域上,浏览器环境中的安全策略,比如http://xeye.us/域 中的Flash文件就无法单刀直入地与http: //hi.baidu.com/ycosxhack域上的Flash文件交互。同一个域(严格域)下的所有文件属于一个沙箱,沙箱内的对象是可以互相返 回,而沙箱之间的对象需要交互的话,得靠上面介绍的权限控制的“Web 站点控制(跨域策略文件)”与“作者(开发人员)控制”进行了。
2、本地沙箱:
出来个本地沙箱,没办法,Flash与Flex文件可以在我们的桌面环境下运行。如果没有个很好的安全策略来限制这些功能不弱的AS脚本的话,那绝对是很危险的事。
它有三种类型:
a)、只能与本地文件系统内容交互的本地沙箱:顾名思义,就是该Flash文件在本地运行时是不能与网络上的对象进行通信的,而只能与本地对象进行交互。
b)、只能与远程内容交互的本地沙箱:还是顾名思义,此时的Flash文件要与远程域对象交互时,需在远程域上通过策略文件或以Security.allowDomain编码方式来设置访问策略(同远程沙箱)。此时不能访问本地文件。
c)、受信任的本地沙箱:完美了,上面介绍的权限控制中,管理用户与普通用户都有Flash Player信任目录的控制权限,只要将我们的SWF文件放到受信任目录内运行,那么这个Flash文件就可以与本地域和远程域通信了:)。
当然以上这些沙箱类型,我们可以通过编码来确定当前运行的Flash文件被分配到什么类型的沙箱中。还是通过Security类:Security.sandboxType,值:
Security.REMOTE(远程沙箱)
Security.LOCAL_WITH_FILE(只能与本地文件系统内容交互的本地沙箱)
Security.LOCAL_WITH_NETWORK(只能与远程内容交互的本地沙箱)
Security.LOCAL_TRUSTED(受信任的本地沙箱)
恩,Flash的安全沙箱就是这些笔记了,写到这,还不得不提下Flash的一些其他安全问题。这些安全问题大多围绕安全沙箱进行。
在我们发布Flash时生成的HTML文件内, 与 标签内的几个属性需要明确的。
allowNetworking:
该参数控制Flash文件的网络访问功能。有三个值:all(所有的网络API都可用)、internal(除了不能使用浏览器导航和浏览器交互的API外,其它的都可用)、none(所以网络API都不可用)。
allowScriptAccess:
这是AS与JS通信的安全控制,还记得ExternalInterface的作用吗。有三个值:never(ExternalInterface的 call方法不能与HTML的JS脚本进行通信)、sameDomain(同域内就可以了,这是默认值)、always(这个就允许所有域了,比较危 险)。
allowFullScreen:
全屏模式的安全问题,这是一个boolean值,默认为false,不允许Flash全屏。全屏带来的安全问题莫非是用户界面欺骗这样的类型?我不是很清楚。
上面这三个属性得区分好了啊。安全问题不仅这点,还有比如LocalConnetion的本地通信、共享对象SharedObject的使用、 E4X在AS中的使用、其它的Socket通信、一些网络API,比如全局的navigateToURL、Flash与其它非Flash的外部对象的通信 问题等等。这些安全问题大都围绕安全沙箱进行。Flash或者Flex文件可以做得很漂亮,很精彩,比如那些非常优秀的Flash动画与游戏,然而一定得 时刻保持警惕。
文章二:http://blog.csdn.net/aizyhan/archive/2009/02/04/38 62680.aspx
关于Flex安全沙箱问题的解决
最近遇到了flex 的安全沙箱问题,找了很多资料发现不是都是和我,我的程序需要socket连接,而大多数讲的都是跨域文件读取的。我先把两种方法都总结出来:
跨域文件读取
方法一:在目标服务器上布署crossdomain.xml文件(我用的此方法很管用,放上就没问题了) 需要远程服务根目录定义有crossdomain.xml文件,如下:
方法二:使用代理,把Flex要访问的远程文件通过asp, php, jsp等脚本读取到本地,然后再由Flex去访问;
方法三:使用Adobe flash player 9 打开程序后,点击菜单栏中文件->创建播放器…即生成exe文件,运行exe文件即可突破安全限制;
方法四: 1、找到这个文件夹:c:\Documents and Settings\\Application Data\Macromedia\Flash Player\#Security 2、在其下建立一个名为”FlashPlayerTrust”的文件夹 3、在”FlashPlayerTrust”文件夹下新建一TXT文件,内容如 下: c:\ d:\ e:\ f:\ 4、将该txt文件命名为:”myTrustFiles.cfg” 再打开你硬盘里的SWF文件,就不会出现那个烦人的安全设置提示窗口了!
方法五: 用HttpService它默认是有Proxy的,需要配置flex-config.xml,里面有一段: ………………
这个是白名单,一般情况下是注释掉的,也就是默认只有本地的http://{localserver}/*和https://{localserver}/*可以访问。其他的需要在flex-config.xml里的自行修改成需要的就可以了。
访问本地自然不会跨域,不过你肯定访问局域网其他机器了,所以是依照白名单规则,属于跨域
Socket沙箱问题
在Flex中使用Socket进行通信时,也会受到Flash9的新安全策略的困扰. 解决方法不能像在Web服务器中布置一个crossdomain.xml来解决,或是在服务器上专门开启843端口来提供安全策略. 有一种方法就是在接收到客户端的连接后,向其发送 安全策略.
比如我是用JAVA来开发, 客户端的Flex会先搜索同域,及服务器的843口,看是否能得到安全策略,这时候Socket是先建立好的,可以在接收到Socket ,即Accept事件发生是,马上向其发送 策略串,否则客户端就会因为安全策略不过关,于断开, 如果成功获取策略,则客户端将断掉先前的那次Socket, 再真正进行程序中你要求的Socket连接请求.
文章三:http://blog.csdn.net/jiabangok/archive/2009/04/16/ 4075210.aspx
1.网络访问的swf文件,Security.sandboxType值为remote,这种情况下通过服务器上的跨域文件crossdomain.xml判断是否能够跨域访问。比如http://site1/flash1.swf需要访问http://site2上的资源,则需要在site2服务器上crossdomain.xml中添加site1的访问许可。
2.本地访问的swf文件,Security.sandboxType值为localTrusted、localWithNetwork、 localWithFile三者之一。localWithNetwork仅允许访问网络资源,localWithFile仅允许访问本地资 源,localTrusted两者均可。Flash9 Debug版本默认为localTrusted(?待确认),Flash10 Debug版本默认为localWithNetwork。
因此在使用Flex进行编译时,如果访问本地资源将会产生安全沙箱错误。
解决方法一:更改工程属性,Flex Compiler
发表评论
-
《算法之美》の字符串相关问题の壹
2012-07-06 09:52 722题目:编写一个单词逆序输出的算法,例如输入"SE ... -
WinForm下正则表达式的应用
2012-07-06 09:45 9351.引入命名空间:using System.Text.Re ... -
八个最常用的正则表达式
2012-07-06 09:38 711灵活的使用正则表达式,可以使得程序既简洁,又清晰。因为正则 ... -
基于表的Lua原生支持面向对象编程在GUI中的使用示例
2012-07-06 09:30 1137lua真的有很多神奇的用法,下面是一个基于表的形式实现的对 ... -
图片展示
2012-07-05 20:45 5945 ... -
Flex 4架构的组件开发
2012-07-03 13:44 599Flex 4架构的组件开发 作者:Michael Labr ... -
Flex利用自定义事件使用弹出窗口为DataGrid添加新数据
2012-07-02 12:27 629下面是TitleWindow所有代码: Xml代码 ... -
Flex右键菜单扫盲
2012-07-02 12:27 775怎么添加右键?在 Flex 中,只有应用程序中的顶层组件才 ... -
flex--LineChart
2012-07-02 12:27 622最近工作上用到了linechart,在网上查的资料还是非常 ... -
flex的mask处理
2012-07-02 12:26 759在做公司一个flash播放器时候,需要在一个swf中动态加 ... -
flex datechooser 日期小例子
2012-07-02 12:26 583在这个例子中,我们讲解的是DateChooser 控件,这 ... -
在应用中使用Ext Loader
2012-07-01 10:01 522原文:http://www.sencha.com/b ... -
广州工作2个月!差人的公司可以call我
2012-07-01 10:01 557网名:夜梦惊魂/夜枫设计 姓名:胡军 博客:http ... -
WebKit介绍及总结(一)
2012-07-01 10:01 652一. WebKit简介 ... -
基于push技术的web实时网络管理框架研究
2012-07-01 10:01 4351 引言 基于 web 的网络管理是web 功能和网 ... -
MyEclipse for Spring 8.6: Spring MVC Scaffolding
2012-07-01 10:01 790Scaffolding consists of singl ... -
FLEX和Actionscript开发FLASH游戏8-2-1
2012-06-30 16:28 613FLEX和Actionscript开发FLASH游戏8-2-1 ... -
flex 联机游戏开发 - 五子棋游戏:(二)人性化选择
2012-06-30 16:27 590flex 联机游戏开发 - 五子棋游戏:(二)人性化选择 2 ...
相关推荐
### FLEX安全沙箱实用指南 #### 一、引言 在进行FLEX开发时,了解和掌握FLEX的安全沙箱机制对于确保应用程序的安全性至关重要。本文将详细介绍FLEX安全沙箱的相关概念及其应用场景,帮助开发者更好地理解如何在...
Flex安全沙箱是Adobe Flex应用程序在运行时遵循的一套安全机制,旨在保护用户的数据和系统安全。这个概念是在Flex 4之后尤其受到关注,因为当时在Internet Explorer中出现了与安全沙箱相关的挑战。沙箱模型类似于...
Flex安全沙箱问题是一个在开发基于Adobe Flex的应用程序时经常遇到的问题。Flex作为一个富互联网应用程序(RIA)框架,它使用ActionScript和MXML进行编程,而这些代码在运行时受到安全沙箱的限制,以防止恶意行为。...
"克服flex安全沙箱限制的视频像素信息采集存储的方法"是一个关键的技术议题,主要涉及的是如何在受到Adobe Flex安全沙箱限制的环境中有效地获取和存储视频帧的像素数据。Flex是一种基于ActionScript 3的开放源代码...
在Adobe Flash Player升级到9.0.124后,由于安全策略更改,原来Socket或XmlSocket的应用里的http方式加载安全策略的手段不能继续使用。...connectbysocket 是flex客户端 connectbysocket请放在tomcat下试验效果
Flex安全沙箱是Adobe Flex应用程序在运行时用以确保安全的机制,其通过将应用程序限制在特定的运行环境内,防止恶意软件和代码对用户系统造成损害。在Flex中,沙箱主要分为三类:本地沙箱、本地信任沙箱、远程沙箱。...
本篇将详细介绍如何通过“flex本地安全域设置”来解决Flex安全沙箱的问题,以及为何无需到Adobe官网设置全局安全域。 1. **Flex安全沙箱**:Flex应用运行在两种安全沙箱中,分别是“本地trusted”和“网络sandbox”...
在使用ArcGIS API for Flex开发WebGIS应用时,安全沙箱问题是一个重要的考虑因素,它涉及到数据的安全性和应用程序的跨域访问控制。Flex是Adobe Flash平台的一部分,用于创建丰富的互联网应用,而ArcGIS API for ...
网上的方法很多,我看了好多,但是就是不管用,我的情况是,在程序没发布时,直接运行没错误,但是当发布时,访问就错了,提示SecurityError: Error #2048: 安全沙箱冲突:http://localhost:8086/index.swf 不能从 ...
### flex沙箱安全问题 #### 一、概述 在Flex应用程序开发过程中,远程对象(RemoteObject)服务常常被用于客户端与服务器之间的数据交互。但在实际应用中,由于跨域策略的限制,可能会遇到Error #2048这样的错误...
【标题】:“源于FLEX中的安全沙箱问题” 【描述】:在FLASH PLAYER中,安全沙箱是一个关键的安全性组件,它将资源逻辑地分组,以限制各个FLASH应用程序能够执行的操作和访问的资源。安全沙箱确保了各应用程序与...
在这个“Flex开发实例 用于Flex沙箱的控制”中,我们将深入探讨如何利用Flex技术来管理和控制沙箱环境,以确保在富客户端中的安全运行。 Flex沙箱是Flex应用程序运行时的一个核心组件,它模仿了Adobe Flash Player...
### Flex安全机制详解 #### 一、Flex安全机制概述 Flex是一种用于构建高效且美观的Web应用程序的技术,它能够提供丰富的用户体验。为了确保安全性,Flex采用了一套完整的安全机制来控制不同域之间的通信,其中包括...
《Flex与.NET基于Socket的网络连接 收藏 .txt》和《Flex flash_player9 沙箱安全解决方案.txt》可能讨论了Flex应用程序与.NET服务通过Socket通信时如何处理安全沙箱问题,以及在Flash Player 9中如何解决这些问题的...
当Flex应用尝试导出PDF并涉及到跨域数据时,可能会遇到安全沙箱问题,即使配置了`crossdomain.xml`文件,也可能无法完全解决这个问题。 为了解决这个问题,开发者可能采用了替代方法,如使用不受沙箱限制的库或者...
在本案例中,标题和描述提到的是"lex for arcgis"在Java Tomcat环境下遇到的跨域限制,这个问题通常被称为"安全沙箱问题2048"。下面我们将深入探讨这个话题。 首先,让我们明确什么是跨域问题。在Web浏览器的安全...
- **安全性**:Flex支持安全沙箱模型,保护用户数据安全。 #### 五、Flex应用案例分析 通过实际案例的学习,可以更深入地理解Flex在不同场景下的应用技巧: - **在线视频播放器**:利用Flex的多媒体支持,可以开发...
然而,Flash在安全方面存在一些重要概念,其中之一就是“沙箱”机制。本篇文章将详细探讨“Flash加载SWF文件的沙箱问题”,并结合标签“源码”和“工具”来深入理解这个问题。 Flash Player为了确保用户的安全,...
在Flex客户端中,由于安全限制,某些操作(如访问本地文件系统)受到限制,这被称为安全沙箱。为了绕过这些限制,服务器端可能需要提供特定的服务,例如数据传输、文件下载等,以协助Flex客户端完成受限的任务。在...
此外,Flex还支持自定义部署策略,如沙箱限制、安全策略文件等。 九、Flex学习资源 “Flex中文帮助”可能是这个压缩包提供的辅助学习资料,它可能包含了详细的API文档、示例代码和常见问题解答,对于初学者来说是一...