flash和策略文件

最近的项目涉及到flash通过socket和服务器连接,刚接触这方面的内容,遇到了flash通信时安全策略的问题,这里记录下,有遇到相同问题的同学可以参考下。

HTML中的flash和服务器链接最初报错:[SecurityErrorEvent type="securityError" bubbles=false cancelable=false eventPhase=2 text="Error #2048"]。抓包:

flash有发请求但服务器端业务接口中并没有收到请求,抓包可以看到,flash先请求了843接口,但没有成功,重试了一次后,请求了80端口,三次握手之后,发送了一段数据: <policy-file-request/>, 同时在as文件中触发了SecurityErrorEvent.SECURITY_ERROR 事件,通过排查发现是flash要请求安全策略文件。

当封装在页面的flash发起socket通信请求的时候会先寻找服务器端的843端口,获取Crossdomain.xml文件,当服务器没有开启843的时候,flashPlayer会检查发起请求的swf文件中中有没有使用Security.loadPolicyFile来加载策略文件Crossdomain.xml,如果还是没有就会看这个发起请求的swf要连接的目标端口有没有策略文件。如果都没有那么连接失败,返回如上的出错提示

由于测试服务器无法监听843端口,我们想通过监听8080端口来发送策略文件,操作方法是在socket.connect(ip, port)之前调用SWF Security.loadPolicyFile("xmlsocket://server.com:8080");,再试还是相同的错误:

8080端口返回了策略文件但是flash仍然请求了80端口获取获取策略文件,本来是按照文档操作的,带着疑问看了as的文档

as文档描述如下:

默认情况下禁止访问套接字和 XML 套接字连接,即使所要连接的套接字与 SWF 文件位于同一个域中也是如此。可以从下列 任意位置提供套接字策略文件,从而允许套接字级别访问: ? 端口 843 (主策略文件的位置) ? 与主套接字连接相同的端口 ? 主套接字连接端口之外的端口 默认情况下, Flash Player 在端口 843 和主套接字连接所在的端口上查找套接字策略文件。如果要从其它端口提供套接字策略文件, SWF 文件必须调用 Security.loadPolicyFile()。 套接字策略文件具有与 URL 策略文件相同的语法,只是前者还必须指定要对哪些端口授予访问权限。如果套接字策略文件来自低于 1024 的端口号,则它可以对任何端口授予访问权限;如果策略文件来自 1024 或更高的端口,则它只能对 1024 端口和更高的端口授予访问权限。允许的端口在 标记中的 to-ports 属性中指定。单个端口号、端口范围和通配符都是允许值。

也就是我们用了8080端口提供的策略文件并不能控制80端口的访问权限。

所以必须开启843端口,或者还是从8080端口获取侧略文件, 但要将主业务的端口改成大于1024。

参考: [ActionScript 3] Flash Socket通信的安全策略问题 843端口(转载) ADOBE? ACTIONSCRIPT? 3.0

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏周奇的专栏

tungsten replicator:数据迁移利器【mysql 数据同步到 mongodb】

tungsten-replicator 是一款开源的、高性能、跨数据库系统的复制引擎,可用作多种场景下的数据迁移组件。本文尝试利用该工具实现 mysql 数据到...

5890
来自专栏你不就像风一样

[原创]颠覆传统网站开发模式的web服务器

以Java web举例,现在的网站系统开发模式,对于web端和服务端的数据交互以及页面渲染,无外乎两种:

762
来自专栏王磊的博客

聊聊excel生成图片的几种方式

目录     I:需求。    II:实现思路。     III:实现方式。     IV:优缺点分析。     V:结论。     VI:wps安装与配置。 ...

33711
来自专栏cs

vmware14.0知识点手册

本篇文章是VMware官网的 使用VMware Workstation Pro - VMware Workstation Pro 14.0 的开源手册的摘抄版...

5429
来自专栏blackpiglet

配置 SSH 端口转发,并设置开机启动

为了降低运维成本,提高可靠性,物理服务器往往都不再部署在本地,IDC 托管成了更多企业的选择。服务器托管在 IDC 后,出于安全的考虑,不会直接开放所有服务器的...

693
来自专栏情情说

单点登录与权限管理本质:session和cookie介绍

本篇开始写「单点登录与权限管理」系列的第一部分:单点登录与权限管理本质,这部分主要介绍相关的知识概念、抽象的处理过程、常见的实现框架。通过这部分的介绍,能够对单...

3113
来自专栏容器云生态

企业网站架构之Nginx详解原理以及工作模块;源码Lnmp架构

Nginx详解及lnmp环境架构 一、Nginx详解以及优点 在当前互联网环境下,一般高端的服务前端都采用nginx作为web前端,而更多的都是采用lnmp...

2917
来自专栏james大数据架构

分布式文件系统FastDFS如何做到高可用

FastDFS是用C语言编写的一款开源的轻量级分布式文件系统。它对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)等,解决了大容量存...

3076
来自专栏云计算教程系列

如何在Ubuntu 18.04上保护Redis的安装

Redis是一个使用内存技术,NoSQL,键值缓存及存储,也可以保存到磁盘。它专为受信任环境中的受信任客户端设计,自身没有强大安全功能。这里是Redis官方网站...

1025
来自专栏james大数据架构

高可用高性能分布式文件系统FastDFS进阶keepalived+nginx对多tracker进行高可用热备

  在上一篇 分布式文件系统FastDFS如何做到高可用 中已经介绍了FastDFS的原理和怎么搭建一个简单的高可用的分布式文件系统及怎么访问。   高可用是实...

3026

扫码关注云+社区