### Flex安全机制详解 #### 一、Flex安全机制概述 Flex是一种用于构建高效且美观的Web应用程序的技术,它能够提供丰富的用户体验。为了确保安全性,Flex采用了一套完整的安全机制来控制不同域之间的通信,其中包括了沙箱机制和安全策略文件的应用。 #### 二、沙箱机制 Flex的安全机制之一就是沙箱机制,它限制了SWF文件能够访问的资源范围,以防止恶意代码的执行。沙箱机制将不同的SWF文件隔离在各自的“沙箱”内,这样即使其中一个SWF文件被攻击者利用,也不会影响到其他SWF文件。 ##### 本地播放 在本地环境中播放SWF文件时,Flash Player默认情况下不会允许该SWF文件访问任何网络资源。如果需要访问特定的网络资源,可以访问[Macromedia的设置管理页面](http://www.macromedia.com/support/documentation/en/flashplayer/help/settings_manager04.html),将需要访问网络的SWF文件添加到许可列表中,以解除网络访问的限制。 ##### WEB发布 对于在网络上发布的SWF文件,可能会遇到跨域问题。Flash Player通过检查目标域下的安全策略文件来判断是否允许跨域访问。这些安全策略文件通常位于目标域的根目录下,名称为`crossdomain.xml`。 #### 三、Flash中的通信方式 在Flex中,主要通过两种方式实现通信: 1. **HTTP方式**:通过如`URLLoader`等组件加载远程资源,包括SWF文件、图片、音视频流等。 2. **Socket方式**:通过如`XMLSocket`等组件建立与远程服务端的长效连接,实现更高级的实时通信功能。 #### 四、安全策略文件 从Flash Player 6开始,引入了安全策略文件的概念。在正式通信之前,Flash Player会检查目标位置是否存在合法的安全策略文件,以防止不同域的应用之间无限制地互相访问。 ##### HTTP方式 对于HTTP方式的通信,Flash Player会检查目标域根目录下是否存在`crossdomain.xml`文件。如果存在,就会获取并分析其内容,根据内容判断是否允许继续访问。 ##### Socket方式 Socket方式的安全策略检查较为复杂: 1. 客户端向目标主机的843端口发起连接,并发送一个包含`<policy-file-request/>`的字符串。 2. 如果第一步失败,那么检查AS代码中是否已经使用`Security.loadPolicyFile("xmlsocket://主机:端口")`加载了安全策略文件。 3. 如果第二步也失败,那么向即将连接的目标主机端口发起请求,重复第一步的操作。 4. 如果成功获取安全策略文件并通过分析认为允许建立连接,则继续执行`Connect()`方法,尝试创建与目标主机的连接。 #### 五、解决方案 针对Socket方式的通信,可以通过以下几种方法来解决安全策略问题: 1. 在服务端编写程序监听843端口,当接收到`<policy-file-request/>`时返回恰当的安全策略文件内容(即`crossdomain.xml`)。 2. 在AS代码中使用`Security.loadPolicyFile()`方法加载安全策略文件,注意使用`xmlsocket://`协议而不是`http://`。 3. 对于标准服务端口,检测到`<policy-file-request/>`时返回策略内容。 #### 六、例外情况及测试结果 在不同的浏览器中,Flash Player对安全策略文件的检查方式有所不同。例如,在IE和Opera中,Flash Player会严格按照上述步骤检查安全策略;而在Firefox和Chrome中,Flash Player并不会发送`<policy-file-request/>`,而是直接尝试建立连接。 #### 七、数据传输中的问题 在使用XMLSocket进行数据传输时,需要注意以下几个关键点: 1. **结束符号**:XMLSocket接收到服务端下发的数据时,会将其连续放入接收缓冲区,直到接收到ASCII值为0的字节`\0`,才认为接收完成。如果服务端使用Java编写,需要在发送数据的结尾手动加上`\0`。如果是C++编写的服务端,由于C++字符串默认以`\0`作为结束符,无需额外添加。 2. **中文问题**:默认情况下,如果数据中包含中文字符,可能会出现乱码现象。解决方法有两种: - 在AS中加入`System.useCodepage=true;`,强制使用本地编码集,但这种方法在跨语言平台中仍然可能出现乱码。 - 在代码中编写自定义的转码函数,虽然实现起来较为复杂,但具有更强的通用性。 通过上述内容的介绍,我们可以看到Flex安全机制的重要性及其在实现过程中的细节处理。正确理解和应用这些安全机制可以帮助开发者构建更加安全可靠的Flex应用。
- 粉丝: 0
- 资源: 3
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助