用过Flash socket的同学都知道,Flash socket通讯有安全沙箱问题。就是在Flash Player发起socket通信时,会向服务端获取安全策略,如果得不到服务端响应,flash将无法连接到服务端。
首先,什么是Flash安全沙箱?
Flash安全沙箱是Flash Socket的一种安全策略,为避免任意Flash终端与目标主机建立Socket通讯,以授权端口,域名方式限定连接。
那么,Flash Player怎么获取Socket策略?
Flash Player发起socket通信请求的时候会先连接服务器端的843端口,获取Socket策略。当服务器没有开启843端口的时候,Flash Player会检查发起请求的flash程序中有没有使用Security.loadPolicyFile来加载Socket策略,如果还是没有就会看这个发起请求的连接的目标端口有没有Socket策略。如果都没有,那么Flash Player将触发连接失败的Socket事件,即SecurityErrorEvent.SECURITY_ERROR。
备注一下,Security.loadPolicyFile的用法为:Security.loadPolicyFile("xmlsocket://127.0.0.1:8080");
再来看看Socket策略的格式
1、以下是最简单的Socket策略,就是不做任何限制的:
<cross-domain-policy>
<allow-access-from domain="*" to-ports="*"/>
</cross-domain-policy>
2、如果要限制某个域名或者ip,可以这样写:
<cross-domain-policy>
<allow-access-from domain="*.example.com" />
<allow-access-from domain="192.168.5.110" />
</cross-domain-policy>
3、限制端口可以这样定义:
<cross-domain-policy>
<allow-access-from domain="*" to-ports="507" />
<allow-access-from domain="*.example.com" to-ports="507,516" />
<allow-access-from domain="*.example.com" to-ports="516-523" />
<allow-access-from domain="www.example.com" to-ports="507,516-523" />
</cross-domain-policy>
4、完整的socket策略要怎么定义?
看一下这个示例:
<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM "/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
<site-control permitted-cross-domain-policies="master-only"/>
<allow-access-from domain="swf.example.com" to-ports="123,456-458" />
</cross-domain-policy>
其中,site-control告诉Flash Player,服务端支持哪种socket策略。设为master-only表示这个策略是服务端唯一的策略,Flash Player不要去支持服务端其他socket策略。还可以设为all和none。all表示所有端口的策略都是可信的,none是拒绝所有连接。
最后,再来看下Flash Player获取Socket策略时发什么请求信息给服务端?
Flash Player发起socket连接请求会向服务端发23字节的字符数据:<policy-file-request/>
细心的同学会观察到,<policy-file-request/>只有22字节,怎么还多了1个字节呢?
这里有一点要注意,<policy-file-request/>后面还多带了一个NULL 的字节数据。
参考:
http://blog.csdn.net/mycwq/article/details/24675773
http://www.adobe.com/devnet/flashplayer/articles/socket_policy_files.html
分享到:
相关推荐
本程序为绿色mini服务程序 程序会自动打开Flash默认的843端 自动将crossdomain.xml返回给flash客户端 您可以修改crossdomain.xml中的内容,大小不要超过10K 有问题可email我
本文将深入探讨如何实现这两种语言间的Socket通信,并解决在Flash Player的安全沙箱问题。 首先,让我们理解什么是Socket通信。Socket是网络编程中的一个概念,它允许两个程序通过TCP/IP协议进行双向通信。在Java中...
在IT行业中,安全沙箱是一种重要的安全机制,尤其在Flash技术中扮演着核心角色。Flash安全沙箱的主要目的是为了限制并隔离运行的Flash内容,防止它们对用户系统造成潜在的危害。下面将详细介绍Flash安全沙箱的基本...
本程序为绿色mini服务程序 程序会自动打开Flash默认的843端口 自动将crossdomain.xml返回给flash客户端 您可以修改crossdomain.xml中的内容,大小不要超过10K
在这个场景中,我们关注的是ActionScript(AS)与Java之间的Socket通信,以及如何在面临安全沙箱限制时找到解决方案。Socket编程是实现客户端-服务器通信的基础,它允许两个或多个应用程序通过网络交换数据。 首先...
本文将深入探讨如何使用C#作为服务器端,Flash作为客户端,通过Socket进行安全通信,并利用Flash的沙箱机制来保障数据传输的安全性。 首先,让我们了解Socket通信的基本概念。Socket是网络编程中的一个接口,它允许...
综上所述,处理 Flash 安全沙箱问题涉及理解沙箱模型、设置跨域策略、实现安全通信接口、管理权限、代码签名、异常处理以及遵循安全编码实践等多个方面。开发者需要在 Java, C# 和 Delphi 中综合运用这些技术来创建...
通过正确配置和使用提供的工具,开发者能够创建跨越沙箱限制的安全通信链路,实现Flash内容的网络功能,同时确保用户系统的安全性。这尤其适用于需要实时数据交互或者与服务器深度集成的Flash应用程序。
在不同沙箱之间进行通信需要特殊处理,例如通过`flash.system.Security`类的`allowDomain()`或`allowInsecureDomain()`方法设置安全策略。 6. **处理问题的策略** 遇到安全沙箱问题时,首先需要确定代码运行的...
《Flash Socket安全问题的全面解析》文档可能涵盖了Flash中的Socket通信如何受到安全沙箱限制的内容。在ActionScript 3.0中,使用Socket类进行低级别网络通信时,需要特别注意沙箱限制,因为默认情况下,Socket通信...
总结来说,Xcode与Flash通过Socket通信需要理解网络编程的基本原理,掌握如何在两端建立和管理Socket连接,同时要注意Flash的跨域安全策略。通过正确的配置和代码实现,可以实现流畅的数据交换,无论是在本地还是...
### FLEX安全沙箱实用指南 #### 一、引言 在进行FLEX开发时,了解和掌握FLEX的安全沙箱机制对于确保应用程序的安全性至关重要。本文将详细介绍FLEX安全沙箱的相关概念及其应用场景,帮助开发者更好地理解如何在...
在理解Flex安全沙箱时,还需要考虑FlashPlayer的权限控制,它由四个层次组成: - **管理用户控制**:系统管理员可以通过mms.cfg文件和全局FlashPlayer信任目录来设定全局安全策略。 - **用户控制**:普通用户可以...
Socket沙箱设置主要涉及到Flash Player的安全策略,尤其是自9.0.115.0版本之后,对于跨域Socket通信的限制更为严格。这个安全策略的目的是为了防止恶意的跨域数据访问,保护用户信息安全。以下是对这个知识点的详细...
1.安全沙箱容器 2.EdgeKubernetes 3.安全沙箱容器@edge方案 4.新探索 随着云计算边界不断向边缘侧延展,5G 和物联网技术的蓬勃发展给边缘计算带来了巨大机遇的同时,也带来了极大的挑战,传统 runc 容器已无法满足...
【描述】:在FLASH PLAYER中,安全沙箱是一个关键的安全性组件,它将资源逻辑地分组,以限制各个FLASH应用程序能够执行的操作和访问的资源。安全沙箱确保了各应用程序与操作系统、文件系统、网络以及其他应用之间的...
在WebGIS开发中,安全沙箱主要指的是Flash Player的安全限制,它将Flash内容限制在其被加载的源(即SWF文件所在的域)内,以防止恶意代码跨域访问敏感信息。这种机制被称为“安全沙箱”,分为本地沙箱和网络沙箱两种...
这是个通用类,里面包含了处理843端口的安全沙箱问题以及socket基本的向服务器send资源问题。 请求方式是,先发整形,然后发id长度,再发id(String) 得到的资源是先得到字符长度,再得到字符串。这个是和后退约定的...