2011-05-23 2 views
1

Приветствия,Определить параметр разрешения сети в Flash

Это касается проблемы безопасности Flash/песочницы. Мне было интересно, существует ли способ для загруженного объекта Flash .swf знать, установлен ли для него allowNetworking="internal", возможно, с помощью ActionScript (2.0 или 3.0).

Я нашел solution, но не отличается от allowNetworking или allowScriptAccess настройками.

Я не особенно ищет работу вокруг (хотя это было бы интересно тоже), но только, чтобы быть в состоянии обнаружить ли специально allowNetworking установлен в "internal" или по крайней мере что-то другое, чем "all".

Приветствие :)

ответ

1

Вы можете проверить ограничения сетевого API, пытаясь выполнять определенный ограниченный API, и, видя, если SecurityError выбрасываются.

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; 

     } 

список ограниченных интерфейсов сетей можно найти here

+0

Спасибо @ Colin-Cochrane. Однако предлагаемый метод не исключительно/надежно обнаруживает параметр allowNetworking, поскольку на поведение также влияет параметр 'allowScriptAccess'. Ниже приведены результаты, полученные с помощью метода. 'allowNetworking =" all "' надежный только тогда, когда 'allowScriptAccess =" always "или если swf загружен из ** того же домена ** с' allowScriptAccess = "sameDomain" '. – Rameez

Смежные вопросы