最近遇到了flex 的安全沙箱问题,找了很多资料发现不是都是和我,我的程序需要socket连接,而大多数讲的都是跨域文件读取的。我先把两种方法都总结出来:
跨域文件读取
方法一:在目标服务器上布署crossdomain.xml文件(我用的此方法很管用,放上就没问题了) 需要远程服务根目录定义有crossdomain.xml文件,如下:
<?xml version="1.0" encoding="UTF-8" ?> <cross-domain-policy> <allow-access-from domain="*"/> </cross-domain-policy>
方法二:使用代理,把Flex要访问的远程文件通过asp, php, jsp等脚本读取到本地,然后再由Flex去访问;
方法三:使用Adobe flash player 9 打开程序后,点击菜单栏中文件->创建播放器...即生成exe文件,运行exe文件即可突破安全限制;
方法四: 1、找到这个文件夹:c:\Documents and Settings\<UserName>\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-service-proxy> <whitelist> ……………… </whitelist> </http-service-proxy>
这个是白名单,一般情况下是注释掉的,也就是默认只有本地的http://{localserver}/* 和https://{localserver}/*可以访问。其他 的需要在flex-config.xml里的自行修改成需要的就可以了。
访问本地自然不会跨域,不过你肯定访问局域网其他机器了,所以是依照白名单规则,属于跨域
Socket沙箱问题
在 Flex中使用Socket进行通信时,也会受到Flash9的新安全策略的困扰. 解决方法不能像在Web服务器中布置一个crossdomain.xml来解决,或是在服务器上专门开启843端口来提供安全策略. 有一种方法就是在接收到客户端的连接后,向其发送 安全策略.
比如我是用JAVA来开发, 客户端的Flex会先搜索同域,及服务器的843口,看是否能得到安全策略,这时候Socket是先建立好的,可以在接收到Socket ,即Accept事件发生是,马上向其发送 策略串,否则客户端就会因为安全策略不过关,于断开, 如果成功获取策略,则客户端将断掉先前的那次Socket, 再真正进行程序中你要求的Socket连接请求.
下面看看我找的例子吧!
public void run() {
ServerSocket ss;
String ip = "";
try {
ip = InetAddress.getLocalHost().getHostAddress();
} catch (UnknownHostException e1) {
e1.printStackTrace();
}
String xml = "<cross-domain-policy><site-control permitted-cross-domain-policies=\"all\"/>";
xml = xml + "<allow-access-from domain=\"" + ip + "\" to-ports=\"1234\" />";
xml = xml + "</cross-domain-policy>";
try {
ss = new ServerSocket(port);
while (!cancle) {
Socket s = ss.accept();
BufferedReader br = new BufferedReader(new InputStreamReader(s
.getInputStream(), "UTF-8"));
PrintWriter pw = new PrintWriter(s.getOutputStream());
char[] by = new char[22];
br.read(by, 0, 22);
String head = new String(by);
//判断是不是第一求请求连接的安全验证,当客户端连socket时,as3会自动向服务端发送<policy-file-request />这个字符串请求返回策略文件,所以当服务器收到这个串后给client返回就好了。
//如果是返回xML信息
if (head.equals("<policy-file-request/>")) {
System.out.println("连接服务器");
pw.print(xml + "\0");
pw.flush();
br.close();
pw.close();
} else {
//你自己的正常请求处理逻辑
}
}
ss.close();
} catch (IOException e) {
e.printStackTrace();
}
}
分享到:
相关推荐
### FLEX安全沙箱实用指南 #### 一、引言 在进行FLEX开发时,了解和掌握FLEX的安全沙箱机制对于确保应用程序的安全性至关重要。本文将详细介绍FLEX安全沙箱的相关概念及其应用场景,帮助开发者更好地理解如何在...
Flex安全沙箱问题是一个在开发基于...总的来说,解决Flex安全沙箱问题需要深入理解沙箱机制、跨域策略和`crossdomain.xml`文件的配置,同时关注服务器端的实现细节,以确保应用程序既能正常运行,又能保障用户的安全。
在使用ArcGIS API for Flex开发WebGIS应用时,安全沙箱问题是一个重要的考虑因素,它涉及到数据的安全性和应用程序的跨域访问控制。Flex是Adobe Flash平台的一部分,用于创建丰富的互联网应用,而ArcGIS API for ...
"克服flex安全沙箱限制的视频像素信息采集存储的方法"是一个关键的技术议题,主要涉及的是如何在受到Adobe Flex安全沙箱限制的环境中有效地获取和存储视频帧的像素数据。Flex是一种基于ActionScript 3的开放源代码...
### flex沙箱安全问题 #### 一、概述 在Flex应用程序开发过程中,远程对象(RemoteObject)服务常常被用于客户端与服务器之间的数据交互。但在实际应用中,由于跨域策略的限制,可能会遇到Error #2048这样的错误...
【标题】:“源于FLEX中的安全沙箱问题” 【描述】:在FLASH PLAYER中,安全沙箱是一个关键的安全性组件,它将资源逻辑地分组,以限制各个FLASH应用程序能够执行的操作和访问的资源。安全沙箱确保了各应用程序与...
Flex安全沙箱是Adobe Flex应用程序在运行时用以确保安全的机制,其通过将应用程序限制在特定的运行环境内,防止恶意软件和代码对用户系统造成损害。在Flex中,沙箱主要分为三类:本地沙箱、本地信任沙箱、远程沙箱。...
网上的方法很多,我看了好多,但是就是不管用,我的情况是,在程序没发布时,直接运行没错误,但是当发布时,访问就错了,提示SecurityError: Error #2048: 安全沙箱冲突:http://localhost:8086/index.swf 不能从 ...
本篇将详细介绍如何通过“flex本地安全域设置”来解决Flex安全沙箱的问题,以及为何无需到Adobe官网设置全局安全域。 1. **Flex安全沙箱**:Flex应用运行在两种安全沙箱中,分别是“本地trusted”和“网络sandbox”...
《Flex与.NET基于Socket的网络连接 收藏 .txt》和《Flex flash_player9 沙箱安全解决方案.txt》可能讨论了Flex应用程序与.NET服务通过Socket通信时如何处理安全沙箱问题,以及在Flash Player 9中如何解决这些问题的...
### Flex安全机制详解 #### 一、Flex安全机制概述 Flex是一种用于构建高效且美观的Web应用程序的技术,它能够提供丰富的用户体验。为了确保安全性,Flex采用了一套完整的安全机制来控制不同域之间的通信,其中包括...
重启Tomcat服务器后,这个配置应该生效,允许来自任何域的请求访问ArcGIS Server的资源,从而解决“安全沙箱问题2048”。 值得注意的是,允许所有域(`*"/>`)虽然方便,但这也带来了安全性问题,因为它允许任何...
总之,Flash加载SWF文件的沙箱问题涉及到安全性和权限管理,理解并妥善处理这些问题对于创建安全且功能完备的Flash应用至关重要。开发者需要掌握如何适当地调整沙箱策略,同时注意不要过度放宽权限,以保护用户的...
当Flex应用尝试导出PDF并涉及到跨域数据时,可能会遇到安全沙箱问题,即使配置了`crossdomain.xml`文件,也可能无法完全解决这个问题。 为了解决这个问题,开发者可能采用了替代方法,如使用不受沙箱限制的库或者...
客户端说明 chat.mxml socket.connect("127.0.0.1",8888);...FLEX+Java,FLEX+C#,FLEX+C++ <br>把swf放到网站上去,会出现安全沙箱问题没有解决,如果你解决了请告诉我(email:feng0904@163.com),谢谢
- **问题分析**:使用默认终端代理时遇到的安全沙箱冲突,解决方法包括修改安全策略文件或更改目标destination以允许所需的URL。 #### 4. No destination with id XXX registered 错误信息:...
这可能包括对Flex应用的沙箱模式的讨论,以及如何通过Spring Security来保护后端资源。 此外,随着云计算和微服务架构的兴起,Flex和Spring的集成也可能需要适应这些趋势。例如,如何将Spring应用容器化和在云环境...
9. **安全沙箱**:跨域问题在Flex与Java通信中也需要注意。在Tomcat的`\webapps\ROOT`目录下添加`crossdomain.xml`文件,允许来自任何域名的访问,以解决安全沙箱限制。 总结起来,实现Flex与Java通信涉及多个步骤...
- 调用过程中可能遇到的错误包括:找不到方法、安全沙箱限制、版本不兼容等,需要仔细调试和解决。 - Flash内容在HTML页面中嵌入后,需要正确设置SWFObject参数,以便Flex可以正确识别和调用。 4. **源码分析**:...
4. **数据共享**:在Flex和Flash之间共享数据是常见的需求,可以使用`LocalConnection`类创建本地连接对象,实现不同沙箱(即安全域)之间的数据传递。 5. **资源共享**:如果Flash内容需要访问Flex应用中的资源,...