[转]浅谈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策略,就是不做任何限制的:
- <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
[转]浅谈Flash Socket通信安全沙箱的更多相关文章
- 浅谈C#Socket
好不容易把socket通信搞懂一点,比较喜欢做笔记,嘿嘿~ 希望共同学习,共同进步! socket通信是C#中非常基础的一个知识点,我这里用到的是基于Tcp协议的socket通信.Tcp会有三次握手连 ...
- 浅谈tcp socket的backlog参数
最近看netty源码碰到ChannelOption.SO_BACKLOG参数,通过跟踪代码发现其实是用于设置底层tcp socket的backlog参数,由于不了解这个参数,有必要彻底的理解一下. 底 ...
- 浅谈android Socket 通信及自建ServerSocket服务端常见问题
摘 要:TCP/IP通信协议是可靠的面向连接的网络协议,它在通信两端各建立一个Socket,从而在两端形成网络虚拟链路,进而应用程序可通过可以通过虚拟链路进行通信.Java对于基于TCP协议的网络通 ...
- 浅谈Socket编程
浅谈Socket编程 说到Socket,想必大家会觉得陌生又熟悉.许多同学听说过Socket,但仅仅知道它翻译成中文叫做套接字,除此之外似乎并没有太多的了解了.那么今天我就来抛砖引玉地聊一聊Socke ...
- 浅谈IM软件怎样建立安全socket连接、登录
----------------------------------------------------欢迎查看IM软件业务知识<专栏>-------------------------- ...
- 浅谈JAVA中如何利用socket进行网络编程(二)
转自:http://developer.51cto.com/art/201106/268386.htm Socket是网络上运行的两个程序间双向通讯的一端,它既可以接受请求,也可以发送请求,利用它可以 ...
- 浅谈白鹭Egret
浅谈白鹭Egret 最近在做一个移动项目,技术选型的时候接触到了白鹭,简单了解了之后觉得挺合适的,最终就选择了这个引擎. 为什么会选择白鹭引擎呢? 我看上他主要有一下几点: 1 ...
- Android安全开发之浅谈密钥硬编码
Android安全开发之浅谈密钥硬编码 作者:伊樵.呆狐@阿里聚安全 1 简介 在阿里聚安全的漏洞扫描器中和人工APP安全审计中,经常发现有开发者将密钥硬编码在Java代码.文件中,这样做会引起很大风 ...
- [nRF51822] 14、浅谈蓝牙低功耗(BLE)的几种常见的应用场景及架构(科普类干货)
蓝牙在短距离无线通信领域占据举足轻重的地位—— 从手机.平板.PC到车载设备, 到耳机.游戏手柄.音响.电视, 再到手环.电子秤.智能医疗器械(血糖仪.数字血压计.血气计.数字脉搏/心率监视器.数字体 ...
随机推荐
- 《Linux命令行与shell脚本编程大全 第3版》Linux命令行---10
以下为阅读<Linux命令行与shell脚本编程大全 第3版>的读书笔记,为了方便记录,特地与书的内容保持同步,特意做成一节一次随笔,特记录如下:
- 键盘事件keydown、keypress、keyup
事件触发顺序:keydown - > keypress - > keyup 中文输入法: firfox:输入触发keydown,回车确认输入触发keyup chrome:输入触发k ...
- Chrome 75 将原生支持图片懒加载
4 月 6 日,Google 的 Chrome & Web 平台工程经理 Addy Osmani 在个人博客发文,介绍到 <img> 和 <iframe> 的 load ...
- 记一个react拖动排序中的坑:key
在做一个基于react的应用的时候遇到了对列表拖动排序的需求.当使用sortable对列表添加排序支持后发现一个问题:数据正确排序了,但是dom的顺序却乱了,找了一会儿原因后发现是因为在渲染数据的时候 ...
- Lindström–Gessel–Viennot lemma 应用两则
对于一张无边权的DAG图,给定n个起点和对应的n个终点,这n条不相交路径的方案数为 det() (该矩阵的行列式) 其中e(a,b)为图上a到b的方案数 codeforces 348D [给定一张n* ...
- 基于 OpenResty 的动态服务路由方案
2019 年 5 月 11 日,OpenResty 社区联合又拍云,举办 OpenResty × Open Talk 全国巡回沙龙武汉站,又拍云首席布道师在活动上做了< 基于 OpenResty ...
- 某考试 T1 fair (18.5.1版)
转化一下模型:每天可以选1也可以选0,但是任意前i天(i<=n)1的个数都必须>=0的个数,求总方案数/2^n. 然后可以发现这是一个经典题,随便推一下公式发现等于 C(n,n/2)/2 ...
- Linux ClientDataSet libmidas.so.2
Linux ClientDataSet libmidas.so.2 DELPHI LINUX程序使用CLIENTDATASET控件,部署的时候需要libmidas.so,相当于WINDOWS程序的MI ...
- ios为app应用添加icon
在工程中打开plist文件,添加,选择icon files,然后添加不同分辨率的icon名称即可.如果clean后再运行程序还是没有看到效果,那么就删除掉app包然后 再次运行就可以看到效果了.
- XCode设置竖屏
选中你的项目,在General这个标签内,Deoployment info的这个分组,有一个Device Orientation 标签,内有一个Portrait的选项,选中是竖屏,取消选中是横屏