2008年11月30日星期日

flash网络安全沙箱问题

部分文章描述到 flashplayer 寻找crossdomain.xml的过程,说去843端口去询问,于是我决定自己验证下这个事情
flashplayer的确首先访问843端口,请求是,最后面加个"\0",其实也就是0x00.
接着,发现843无法连接,就往应用端口送了,我的tcpserver是9850,所以flashplayer连接到我的tcpserver第一个内容报就发

现在很明显了,解决办法必须自己实现一个tcp socket去应付flashplayer的安全检查,要么在port 843做,要么在应用端口做,当然我不希望在判断我私有协议的时候去检查这么一串东西。所以我还是用843做了。

所以要在843或者应用程序端口写入那个跨域文件


以上转载自AS3天地会

以下摘自网络

与特定端口号一起使用 xmlsocket 协议,您可以直接从 XMLSocket 服务器中检索策略文件,如以下示例所示:

 System.security.loadPolicyFile("xmlsocket://foo.com:414");

这会导致 Flash Player 试图从指定的主机和端口检索策略文件。不仅可以使用端口 1024 和更高端口,任何端口都可以使用。使用指定的端口建立连接后,Flash Player 立即传送 ,并以 null 字节结束。XMLSocket 服务器可以配置为通过同一端口提供策略文件和常规 XMLSocket 连接,在这种情况中,服务器在传送策略文件之前,应等待 。 服务器也可以设置成通过与标准连接相单独的端口提供策略文件,在这种情况下,服务器可以在专用策略文件端口上建立了连接之后立刻发送策略文件。服务器必须 发送一个空字节来终止策略文件,并可以随后关闭该连接;如果服务器不关闭该连接,则 Flash Player 在收到终止 null 字节后也会这样做。

由 XMLSocket 服务器提供的策略文件具有与其它策略文件相同的语法,只是它还必须指定授予访问权限的端口。如果策略文件来自低于 1024 的端口,则它可以对任何端口授予访问权限;如果策略文件来自 1024 或更高的端口,则它只能对其它 1024 端口和更高的端口授予访问权限。所允许的端口在 标签的 "to-ports" 属性中指定。允许使用单个端口号、端口范围和通配符。以下示例显示了一个 XMLSocket 策略文件:

       
从 旧的默认位置(端口 80 上的 HTTP 服务器中的 /crossdomain.xml)获取的策略文件将对所有 1024 端口和更高的端口隐式授予访问权限。不可能从 HTTP 服务器上的任何其它位置检索策略文件来授权 XMLSocket 操作,XMLSocket 策略文件的任何自定义位置必须位于 XMLSocket 服务器上

没有评论: