Flash页游网络通信安全策略问题

       在页游开发过程中遇到这样一个问题:客户端登录到服务器,登录不上。查找原因时,使用抓包工具抓了第一个包,长度23,首两位是0x3C,0x70,最后一位是0x00。开始时以为是登录消息包,反复计算了很多次,都对不上;而且此包的包长度也不对。

       无意中发现此包可能为加载安全策略的请求包,这样一对比,果然——0x3C,0x70就是‘<’、‘p’的ASCII码,全部消息内容为"<policy-file-request/>"再加上一个“\0”的截止字节。这样一来,包的内容和用处都找出来了。

       原来,Flash Player在你的socket.connect("domain",port)运行之前,会按照前面描述的三个过程向你的socket服务器的8443端口(据说Adobe已经向相关管理机构申请保留8443端口给Flash Player用)发送一个字符串 "<policy-file-request/>",这个时候如果你有一个服务在监听8443端口那么收到这个字符串之后,直接按照XML格式发回策略文件就解决了。(注意发回的时候记得加一个截止字符"\0")。

       当然你也可以不用8443端口自己设置一个端口。因为Flash Player如果在8443端口得不到信息,就会检查你是否在你的Flash文件里面自己添加了指定的获取通道,你可以定义一个自己的端口。不过这个时候你不能用http方式,而要用xmlsocket方式。(相当于自动帮你新建了一个xmlsocket对象,然后链接你指定的主机和端口)。比如你想用 1234端口可以在你的Flash里面加这一句 Security.loadPolicyFile(“xmlsocket://www.xxx.com:1234”),需要注意的是这一句要加在你的 socket.connect前面。

       还有最后一个办法,就是在你的socket连接端口监听这个请求。比如你用的是 socket.connect("192.168.3.80",8888),那么在你的服务器加一段接收字符串"<policy-file- request/>"的代码,当接到这个字符串时将策略文家按照xml格式发到客户端。

此文自己整理以作备忘

部分摘自https://blog.csdn.net/zhangwu416826/article/details/8018466

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值