检测Flash中的allowNetworking参数

时间:2011-05-23 05:12:23

标签: flash security sandbox

问候,

这是关于Flash安全/沙箱问题。我想知道加载的Flash .swf对象是否有办法知道是否为它设置了allowNetworking="internal",可能使用ActionScript(2.0或3.0)。

我找到了solution,但它没有区分限制是来自allowNetworking还是allowScriptAccess设置。

我并不是特别想要一个解决方案(虽然这也很有趣),但只是为了能够检测是否将allowNetworking设置为"internal"或至少"all"以外的其他内容。

干杯:)

1 个答案:

答案 0 :(得分:1)

您可以尝试执行特定的受限API并查看是否抛出SecurityError来测试网络API限制。

public static function getNetworkingRestriction():String {

            var result:String = "all"; // default level

            try {
                // first try SharedObject.  If it throws a SecurityError, then allowNetworking="none"
                SharedObject.getLocal("test"); 

                try {
                    // SharedObject didn't throw a SecurityError. 
                    //If ExternalInterface.call() throws a SecurityError then allowNetworking="internal"
                    ExternalInterface.call(""); 
                }
                catch (e:SecurityError) {
                    result = "internal";
                }

            }
            catch (e:SecurityError) {
                result = "none";        
            }

            return result;

        }

可以找到受限制的网络API列表here