2011-05-23 7 views
1

グリーティング、FlashのallowNetworkingパラメータを検出します。

これはフラッシュセキュリティ/サンドボックスの問題に関するものです。ロードされたFlash .swfオブジェクトが、allowNetworking="internal"がActionScript(2.0または3.0)を使用して設定されているかどうかを知る方法があるかどうか疑問に思っていました。

solutionが見つかりましたが、制限がallowNetworkingまたはallowScriptAccessの設定かどうかは区別されません。

私は、具体的allowNetworking"internal"または"all"以外の少なくとも何かに設定されているかどうかを検出し、特に(それも興味深いものになるだろうが)周りの仕事を捜しているわけではないが、ちょうどにできるようにします。

乾杯:)

答えて

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

+0

を見つけることができるコリン・コクラン@ありがとうございます。しかしながら、提案された方法は、動作が 'allowScriptAccess'設定の影響を受けるので、' allowNetworking'設定を排他的/確実に検出するわけではありません。以下は、この方法で得られた結果である。 allowSchema = "all"は 'allowScriptAccess =" always "または' allowScriptAccess = "sameDomain"で**同じドメイン**からswfをロードした場合のみ信頼できます。 – Rameez

関連する問題