[转]浅谈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到车载设备, 到耳机.游戏手柄.音响.电视, 再到手环.电子秤.智能医疗器械(血糖仪.数字血压计.血气计.数字脉搏/心率监视器.数字体 ...
随机推荐
- 遍历页面所有的Checkbox,显示选中的ID
原文发布时间为:2009-04-13 -- 来源于本人的百度文章 [由搬家工具导入] 1、 foreach (Control objCtrl in this.Page.Controls[3].Cont ...
- js2:事件的学习,弹出窗口,状态栏字改变,地图热点的使用
原文发布时间为:2008-11-08 -- 来源于本人的百度文章 [由搬家工具导入] <html> <head> <title>js</title> & ...
- hdu 4956(思路题)
Poor Hanamichi Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)To ...
- 前端优化之Combo Handler
Combo Handler来合并CSS/JS文件 背景 Combo Handler是Yahoo!开发的一个Apache模块,它实现了开发人员简单方便地通过URL来合并JavaScript和CSS文件, ...
- 【转载】NonEmpty和Non Empty的区别
转载来源:http://www.ssas-info.com/analysis-services-articles/50-mdx/2196-mdx-non-empty-vs-nonempty One o ...
- 点击事件与UICollectionView的代理事件的冲突问题
发现的问题:在UIImageView上添加UICollectionView视图,点击UICollectionViewCell,不执行didSelectItemAtIndexPath的代理方法. 解决方 ...
- 用chardet判断字符编码的方法
转自http://www.cnblogs.com/xiaowuyi/archive/2012/03/09/2387173.html 用chardet判断字符编码的方法 1.chardet下载与安装 ...
- (0)git安装
windows安装 https://blog.csdn.net/sishen47k/article/details/80211002
- 首次尝试Flink的一些感受
最近打算研究研究 Flink,根据官方文档写个 Hello,World.入门还是比较容易的,不需要复杂的安装环境.配置.这篇文章简单介绍 Flink 的使用感受以及入门. 感受 搭建环境方便:Flin ...
- How To Commit Just One Data Block Changes In Oracle Forms
You have an Oracle Form in which you have multiple data blocks and requirement is to commit just one ...