zoukankan      html  css  js  c++  java
  • [转]浅谈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

  • 相关阅读:
    软件设计图工具
    属性读取
    socket ReceiveAsync
    Type.GetType()跨程序集反射
    实例化类的时候代码运行顺序
    C# 互斥对象--Mutex---线程同步
    【vim】vim配置教程+源码
    【框架】SPI四种模式+通用设备驱动实现
    【网络】NFS网络文件系统
    【C语言】函数不定长参数
  • 原文地址:https://www.cnblogs.com/unqiang/p/4048326.html
Copyright © 2011-2022 走看看