[转]浅谈Flash Socket通信安全沙箱

用过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策略,就是不做任何限制的:

  1. <cross-domain-policy>
  2. <allow-access-from domain="*" to-ports="*"/>
  3. </cross-domain-policy>

2、如果要限制某个域名或者ip,可以这样写:

  1. <cross-domain-policy>
  2. <allow-access-from domain="*.example.com" />
  3. <allow-access-from domain="192.168.5.110" />
  4. </cross-domain-policy>

3、限制端口可以这样定义:

  1. <cross-domain-policy>
  2. <allow-access-from domain="*" to-ports="507" />
  3. <allow-access-from domain="*.example.com" to-ports="507,516" />
  4. <allow-access-from domain="*.example.com" to-ports="516-523" />
  5. <allow-access-from domain="www.example.com" to-ports="507,516-523" />
  6. </cross-domain-policy>

4、完整的socket策略要怎么定义?

看一下这个示例:

  1. <?xml version="1.0"?>
  2. <!DOCTYPE cross-domain-policy SYSTEM "/xml/dtds/cross-domain-policy.dtd">
  3. <cross-domain-policy>
  4. <site-control permitted-cross-domain-policies="master-only"/>
  5. <allow-access-from domain="swf.example.com" to-ports="123,456-458" />
  6. </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

时间: 2024-10-07 18:06:27

[转]浅谈Flash Socket通信安全沙箱的相关文章

浅谈Flash Socket通信安全沙箱

用过Flash socket的同学都知道.Flash socket通讯有安全沙箱问题.就是在Flash Player发起socket通信时.会向服务端获取安全策略,假设得不到服务端响应,flash将无法连接到服务端. 首先.什么是Flash安全沙箱? Flash安全沙箱是Flash Socket的一种安全策略.为避免随意Flash终端与目标主机建立Socket通讯,以授权port,域名方式限定连接. 那么.Flash Player怎么获取Socket策略? Flash Player发起socke

浅谈android Socket 通信及自建ServerSocket服务端常见问题

摘  要:TCP/IP通信协议是可靠的面向连接的网络协议,它在通信两端各建立一个Socket,从而在两端形成网络虚拟链路,进而应用程序可通过可以通过虚拟链路进行通信.Java对于基于TCP协议的网络通信提供了良好的封装,使用Socket对象代表两端的通信接口,通过Socket产生I/O流进行网络通信. 自建ServerSocket服务端时可能因PC与手机平板终端未接入同一路由器,因此无法访问服本地IP,可以尝试以下两种方式解决 关键词: Socket; ServerSocket;本地IP; ad

浅谈flash的发展和音视频新技术的应用

Flash是由macromedia公司推出的交互式矢量图和 Web 动画的标准,由Adobe公司收购.网页设计者使用 Flash 创作出既漂亮又可改变尺寸的导航界面以及其他奇特的效果.Flash的前身是Future Wave公司的Future Splash,是世界上第一个商用的二维矢量动画软件,用于设计和编辑Flash文档.1996年11月,美国Macromedia公司收购了Future Wave,并将其改名为Flash.后又被Adobe公司收购.Flash通常也指Macromedia Flas

浅谈TCP socket

Socket,用来实现应用的通信,是应用非常广的一个api,今天就来揭开它的神秘面纱. 客户端 引入头文件 #include <winsock2.h> 初始化socket的DLL WSADATA wsaData; WSAStartup(MAKEWORD(2, 2), &wsaData 创建套接字 SOCKET socket(int domain, int type, int protocol); domain 是协议域,包括 AF_INET 对应 ipv4 AF_INET6 对应 ip

浅谈tcp socket的backlog参数

最近看netty源码碰到ChannelOption.SO_BACKLOG参数,通过跟踪代码发现其实是用于设置底层tcp socket的backlog参数,由于不了解这个参数,有必要彻底的理解一下. 底层 backlog参数主要用于底层方法int listen(int sockfd, int backlog), 在解释backlog参数之前,我们先了解下tcp在内核的请求过程,其实就是tcp的三次握手: 1.client发送SYN到server,将状态修改为SYN_SEND,如果server收到请

浅谈IM软件怎样建立安全socket连接、登录

----------------------------------------------------欢迎查看IM软件业务知识<专栏>-------------------------------------------------------------------使用状态机来保持在线状态 [点击]                      拼图算法,将零碎小图,整理到一张大图上[点击]登录导航 [点击]                                          

浅谈白鹭Egret

浅谈白鹭Egret 最近在做一个移动项目,技术选型的时候接触到了白鹭,简单了解了之后觉得挺合适的,最终就选择了这个引擎. 为什么会选择白鹭引擎呢? 我看上他主要有一下几点: 1.egret的类结构以及继承关系跟as3的一模一样,很容易上手. 2.egret尽量保持每个类的属性方法跟as3的一样,这样子的话as3里的写法在egret里面同样使用. 3.egret已经有一套完整的工具,可以方便的开发html5应用,也可以方便的发布手机原生应用. 4.白鹭公司的积极努力,使得每隔一小段时间都会有新版本

[nRF51822] 14、浅谈蓝牙低功耗(BLE)的几种常见的应用场景及架构(科普类干货)

蓝牙在短距离无线通信领域占据举足轻重的地位—— 从手机.平板.PC到车载设备, 到耳机.游戏手柄.音响.电视, 再到手环.电子秤.智能医疗器械(血糖仪.数字血压计.血气计.数字脉搏/心率监视器.数字体温计.耳温枪.皮肤水分计等), 再到智能家居等领域均占有一席之地. 而蓝牙低功耗(BLE)是在蓝牙4.0协议上修改以适用低功耗应用场景的一种蓝牙协议. 随着上一股智能消费类电子大潮的到来,BLE的各种应用也像雨后春笋般在市场上铺开. 如果想 紧跟蓝牙协议的最新动态 ,可以在https://www.b

浅谈数据库系统中的cache(转)

http://www.cnblogs.com/benshan/archive/2013/05/26/3099719.html 浅谈数据库系统中的cache(转) Cache和Buffer是两个不同的概念,简单的说,Cache是加速"读",而buffer是缓冲"写",前者解决读的问题,保存从磁盘上读出 的数据,后者是解决写的问题,保存即将要写入到磁盘上的数据.在很多情况下,这两个名词并没有严格区分,常常把读写混合类型称为buffer cache,本文后续的论述中,统一