良玉的博客 点点滴滴,积水成河_良玉的博客_页游、手游linux运维工程师之路

为flash建立socket安全策略文件服务

前因
Flash被广泛应用于互联网各个方面,是因为它提供了各种各样的特性,其中很重要的一点就是,可以用flash建立TCP连接服务器然后交换数据。从网络管理员的观点看,一个互联网的服务器能够连接进到内网里来,是一个很恐怖的事情,所以flash搞出来一个安全策略文件。之前用nginx搭建了843端口http://blog.uouo123.com/post/806.html,可能是因为版本兼容问题,perl测试成功,但是产品始终获取不到,则查找是否有其他办法来解决问题。

改变
Flash Player 9,0,124,0 版本对这个策略文件进行了两个重大改变:一是所有的端口都需要在策略文件里声明了,以前的版本只需要1024以下的端口需要进行声明;二是可以集中到843端口进行集中式的托管了。Flash Player 9,0,124,0建立的socket连接,会先去请求843端口,如果这个端口没有策略文件,则会去你要连接的端口本身请求策略文件,如果二者都没有,则会被拒绝连接。

控制过程解读
1.Flash Player先到请求的843或者你的指定端口后,会访问当前访问域名下是否有crossdomain.xml文件,如果你的端口不是80,那么请求最多可能三次,如果没有,进行第2步,如果site-control为none则拒绝掉,如果site-control为all则进行第2步。
2.如果在AS中写了Security.loadPolicyFile() ,(它并不是一定生效的,必须在843端口的声明中允许引用其他的策略文件后才能生效),开始读取策略。
3.最后一步是检测要连接的端口是否有权限,这步检测要在843端口中声明需要检测端口才会去做,如果843声明了而策略文件里没有,则会被拒绝。

万能脚本

两个脚本,一个perl的一个是python的,两个都好用,可以很简单地在服务器上搭建843的守护进程。
像下面这样执行就OK了:

./flashpolicyd.pl --file=../policyfile.xml --port=843
./flashpolicyd.py --file=../policyfile.xml --port=843

猛击哪里下载
这里

参考文档:
http://www.adobe.com/devnet/flashplayer/articles/socket_policy_files.html


标签: nginxflashsocket

作者:良玉 分类:故障处理 浏览:868 评论:0
留言列表
发表评论
来宾的头像