【发布时间】:2012-09-09 05:22:55
【问题描述】:
以下是令我困惑的要点:
- 我正在尝试使用 AS3 的 SecureSocket 类在端口 443 上为我们的后端建立一个 TLS 套接字。
- 后端有一个正在运行的服务,在端口 843 上侦听策略文件请求。 (如果您熟悉节点,这是为策略文件提供服务的服务器 https://github.com/3rd-Eden/FlashPolicyFileServer)
提供的策略文件是
<?xml version="1.0"?><!DOCTYPE cross-domain-policy SYSTEM "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd"><cross-domain-policy><allow-access-from domain="*" to-ports="*"/></cross-domain-policy>我编写了一个小测试 Flash sn-p (Test.swf),它试图建立上述 TLS 套接字(在端口 443 上)。
- 通过 Vizzy Flash Tracer(在 Mac 上)启用和完成日志记录
- Vizzy 跟踪内联跟踪和闪存策略相关消息。
结果
运行 1
此运行仅通过内置的策略文件请求端口 843 请求策略文件。 以下是 Test.swf 运行的痕迹:
闪存日志:
* 违反安全沙盒 *
与 mic.test.com:443 的连接已停止 - 不允许来自http://localhost/~mic/flash/Test.swf
错误:来自http://localhost/~mic/flash/Test.swf的请求者对 tlssocket://mic.test.com:443 的资源请求由于缺少策略文件权限而被拒绝。
政策日志:
确定:已加载根级 SWF:
http://localhost/~mic/flash/Test.swf
OK:在策略文件中搜索以授权从资源加载数据 来自http://localhost/~mic/flash/Test.swf的请求者在 tlssocket://mic.test.com:443
错误:来自http://localhost/~mic/flash/Test.swf的请求者对 tlssocket://mic.test.com:443 的资源请求由于缺少策略文件权限而被拒绝。
运行 2
对于本次运行,除了提供上述文件之外,策略文件服务器已针对另一次迭代进行了修改,以将以下 xml 节点添加到响应中:
(根据 adobe 文档)
此运行通过内置的策略文件请求端口 843 快速请求主策略文件,然后在不同的端口上加载 crossdomain.xml 策略文件(确切地说是从网络服务器)
crossdomain.xml 文件如下所示:
<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM "/xml/dtds/cross-domain-policy.dtd">
<!-- Policy file for xmlsocket://socks.example.com -->
<cross-domain-policy>
<allow-access-from domain="*" to-ports="*" />
</cross-domain-policy>
以下是 Test.swf 运行的跟踪:
闪存日志:
* 违反安全沙盒 *
与 mic.test.com:443 的连接已停止 - 不允许来自http://localhost/~mic/flash/Test.swf
错误:来自http://localhost/~mic/flash/Test.swf的请求者对 tlssocket://mic.test.com:443 的资源请求由于缺少策略文件权限而被拒绝。
政策日志:
确定:已加载根级 SWF:
http://localhost/~mic/flash/Test.swf
好的:在策略文件中搜索以授权来自http://localhost/~mic/flash/Test.swf的请求者从 tlssocket://mic.test.com:443 的资源加载数据 确定:已接受策略文件:https://mic.test.com:10443/crossdomain.xml
错误:来自http://localhost/~mic/flash/Test.swf的请求者对 tlssocket://mic.test.com:443 的资源请求由于缺少策略文件权限而被拒绝。
唯一的区别是flash声称接受策略文件,但仍然拒绝播放。
你能指出我的想法哪里错了吗?
【问题讨论】:
-
@wvxvw 感谢您的调查。我确实查看了通过网络传输的内容 - 在(策略)服务器和客户端上,我看到的是......有点奇怪。我假设我应该清楚地看到客户
<policy-file-request/>。然而我看到的是乱码。 -
使用的 Flash 播放器是 11.4 r402
-
答案原来是策略文件服务器需要能够通过 TLS 连接响应请求。 @wvxvw - 我很想感谢你,因为使用wireshark 终于为我指明了正确的方向......我该怎么办?
标签: flash actionscript policy