Flashゲームプログラミング講座 for ActionScript3.0

 

サンドボックスタイプを取得する

 


■サンドボックスタイプを確認する

 
現在のサンドボックスタイプを取得するには、Security.sandboxType プロパティを使用します。
 
■サンドボックスタイプの種類
 
定数 文字列 効果
Security.REMOTE "remote" ネットワーク上で動作しています。
Security.LOCAL_WITH_FILE "localWithFile" ローカル上で動作しています。
「ローカルファイルにのみアクセスする」が選択されています。
Security.LOCAL_WITH_NETWORK "localWithNetwork" ローカル上で動作しています。
「ネットワークにのみアクセスする」が選択されています。
Security.LOCAL_TRUSTED "localTrusted" 信頼できるファイルとして「Flash Player 設定マネージャ」か、"FlashPlayerTrust" 構成ファイルにより登録されています。
Security.APPLICATION "application" AIR アプリケーションとして動作しています。
 
■取得例
 
サンドボックスタイプを取得する

import flash.text.TextField;
import flash.system.Security;

// ------------------------------------------------------------
// テキストフィールド
// ------------------------------------------------------------
// テキストフィールドを作成
var text_field:TextField = new TextField();
text_field.x = 10;
text_field.y = 10;
text_field.width  = stage.stageWidth  - 20;
text_field.height = stage.stageHeight - 20;
text_field.border = true;
stage.addChild(text_field);

// ------------------------------------------------------------
// サンドボックスタイプを調べる
// ------------------------------------------------------------
text_field.text = "SandboxType : " + Security.sandboxType;
 
 

 

クロスドメインポリシーについて

 
 


■クロスドメインポリシーについて

 
自身の Flash から、別ドメインにある一部のリソースを、読み取りアクセスする事はできません。
 
■テキスト系ファイルのアクセス制限
 
例えば、HTML や XML 文書を、読み取りアクセスする事はできません。
 
例えば、CGI のページにアクセスする事はできません。
 
■メディア系ファイルのアクセス制限
 
画像、音楽、動画などのメディアファイルは、読み込んで表示する事ができます。
 
しかし、情報をキャプチャする事はできません。
 
例えば、画像ファイルを、キャプチャーする事はできません。
 
例えば、動画ファイルの映像を、キャプチャーする事はできません。
 
例えば、サウンドファイルから、ID3 タグを取得する事はできません。
 
■ソケット通信のアクセス制限
 
ソケット通信の接続は失敗します。
 

■クロスドメインポリシーを解除する

 
クロスドメインポリシーは解除する事ができます。
 
ポリシーファイルと呼ばれる XML ファイルを、サーバーに設置します。
 

■クロスドメインポリシーファイルについて

 
■クロスドメインポリシーファイルについて
 
ポリシーファイルは、リソースが格納されている、サーバー側に設置します。
 
ポリシーファイルを設置すると、任意の別ドメイン内の Flash から、自身のサーバー内のリソースを読み取れるようになります。
 
リソースシェアリングの一種です。
 
ポリシーファイルの設定は、子孫ディレクトリにも反映されます。
 
■シンプルな記述例
 
「sub.example.com」内の Flash から、読み取りアクセスされる事を許す

<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM "http://www.adobe.com/xml/dtds/cross-domain-policy.dtd">

<cross-domain-policy>
	<allow-access-from domain="sub.example.com" />
</cross-domain-policy>
 
■ <allow-access-from> 要素について
 
読み取りアクセスされる事を許可する、相手の情報を指定します。
 
以下の属性があります。
 
属性名 効果 備考
domain 許可する相手のドメイン名を記述する 必須
to-ports 許可する相手のポート番号を記述する 省略可
secure 許可する相手のセキュア状態を記述する 省略可
 
■相手のドメイン名を指定する( domain 属性)
 
ワイルドカード 『 * 』 の指定が可能です。
 
複数のドメインを指定するには、<allow-access-from> 要素を複数記述します。
 
「example.com」内の Flash から、読み取りアクセスされる事を許す

<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM "http://www.adobe.com/xml/dtds/cross-domain-policy.dtd">

<cross-domain-policy>
	<allow-access-from domain="example.com" />
</cross-domain-policy>
 
「*.example.com」内の Flash から、読み取りアクセスされる事を許す

<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM "http://www.adobe.com/xml/dtds/cross-domain-policy.dtd">

<cross-domain-policy>
	<allow-access-from domain="*.example.com" />
</cross-domain-policy>
 
複数のドメイン内の Flash から、読み取りアクセスされる事を許す

<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM "http://www.adobe.com/xml/dtds/cross-domain-policy.dtd">

<cross-domain-policy>
	<allow-access-from domain="example.com" />
	<allow-access-from domain="example.net" />
	<allow-access-from domain="127.0.0.1" />
</cross-domain-policy>
 
■すべての Flash を許可する
 
* 』とだけ記述した場合、すべての Flash からのアクセスを許可します。
 
セキュリティリスクに注意して下さい。
 
ネットワーク実行からの、読み取りアクセスだけではありません。
 
ローカル実行からの、読み取りアクセスも許可します。
 
すべての Flash から、読み取りアクセスされる事を許す(セキュリティリスクに注意)

<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM "http://www.adobe.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
	<allow-access-from domain="*" />
</cross-domain-policy>
 
■相手のポート番号を指定する( to-ports 属性)
 
to-ports 属性を省略した場合、すべてのポート番号を許可します。
 
* 』とだけ記述した場合と同等です。
 
複数の番号を指定するには、カンマ 『 , 』で区切ります。
 
範囲指定するには、『 番号-番号 』と記述します。
 
すべてのポート番号から、アクセスされる事を許す

<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM "http://www.adobe.com/xml/dtds/cross-domain-policy.dtd">

<cross-domain-policy>
	<allow-access-from domain="example.com" to-ports="*" />
</cross-domain-policy>
 
80番ポートのみ、アクセスされる事を許す

<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM "http://www.adobe.com/xml/dtds/cross-domain-policy.dtd">

<cross-domain-policy>
	<allow-access-from domain="example.com" to-ports="80" />
</cross-domain-policy>
 
1024番と1026番と1028番ポートのみ、アクセスされる事を許す

<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM "http://www.adobe.com/xml/dtds/cross-domain-policy.dtd">

<cross-domain-policy>
	<allow-access-from domain="example.com" to-ports="1024,1026,1028" />
</cross-domain-policy>
 
1024~2048番ポートのみ、アクセスされる事を許す

<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM "http://www.adobe.com/xml/dtds/cross-domain-policy.dtd">

<cross-domain-policy>
	<allow-access-from domain="example.com" to-ports="1024-2048" />
</cross-domain-policy>
 
■許可する相手のセキュア状態を指定する( secure 属性)
 
省略した場合、セキュアな通信の汚染を許しません。
 
例えば、自身のリソースがセキュア(https) で、相手の Flash がアンセキュア(http) である場合、拒絶します。
 
この制限を解除するには、false を指定します。
 
セキュリティリスクに注意して下さい。
 
セキュアな通信が汚染する相手から、アクセスされる事を許す(セキュリティリスクに注意)

<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM "http://www.adobe.com/xml/dtds/cross-domain-policy.dtd">

<cross-domain-policy>
	<allow-access-from domain="example.com" secure="false" />
</cross-domain-policy>
 

■マスターポリシーファイルについて

 
■マスターポリシーファイルとは?
 
ルートフォルダ内(ドメイン直下)に「crossdomain.xml」という名前で設置した、ポリシーファイルです。
 
例えば、「http://example.com/crossdomain.xml」です。
 
マスターポリシーファイルを、別の名前に変更する事はできません。
 
デフォルトでは、マスターポリシーファイルのみが有効です。
 
それ以外のポリシーファイルは、無効です。
 
■ <site-control> 要素について
 
<site-control> 要素は、マスターポリシーファイルにのみ記述できます。
 
permitted-cross-domain-policies 属性から、メタポリシーを設定します。
 
■メタポリシーの設定について
 
メタポリシーは、サーバー管理者用の設定です。
 
自身のサーバー内の、ポリシーファイルの取り扱い方法を指定します。
 
効果
"none" すべてのポリシーファイルが無効です。
"master-only" マスターポリシーファイルのみが有効です。
それ以外のポリシーファイルは無効です。
この設定はデフォルトです。
"all" すべてのポリシーファイルが有効です。
サブフォルダごとに、ポリシーファイルを設置する事ができます。
 
効果
"by-ftp-filename" 「crossdomain.xml」という名前のファイルのみが有効です。
FTP サーバで指定します。
"by-content-type" 「Content-Type」が「text/x-cross-domain-policy」である場合のみ有効です。
HTTP サーバで指定します。
 
効果
"none-this-response" このポリシーファイルは、サーバー管理者によって無力化されます。
サーバー管理者が、レスポンスヘッダを上書きして指定します。
 
■マスターポリシーファイルの記述例
 
サブフォルダごとにポリシーファイルを設置する事を許さない。(マスターポリシーファイルのみが有効)

<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM "http://www.adobe.com/xml/dtds/cross-domain-policy.dtd">

<cross-domain-policy>

	<site-control permitted-cross-domain-policies="master-only" />

	<allow-access-from domain="a.example.com" />
	<allow-access-from domain="b.example.com" />
	<allow-access-from domain="c.example.com" />

</cross-domain-policy>
 
サブフォルダごとにポリシーファイルを設置する事を許す

<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM "http://www.adobe.com/xml/dtds/cross-domain-policy.dtd">

<cross-domain-policy>

	<site-control permitted-cross-domain-policies="all" />

</cross-domain-policy>
 
すべてのポリシーファイルを無効化する

<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM "http://www.adobe.com/xml/dtds/cross-domain-policy.dtd">

<cross-domain-policy>

	<site-control permitted-cross-domain-policies="none" />

</cross-domain-policy>
 

■マスターポリシーファイルが設置できない場合について

 
サブフォルダのポリシーファイルごとに、メタポリシーの設定を行う事もできます。
 

■ポリシーファイルごとにメタポリシーの設定を行う

 
■ X-Permitted-Cross-Domain-Policies ヘッダについて
 
ポリシーファイルから、「X-Permitted-Cross-Domain-Policies」ヘッダを出力します。
 
ヘッダ値には、メタポリシーの値を指定します。
 
.htaccess を使って、crossdomain.xml ファイルにヘッダを追加する

<Files "crossdomain.xml">
	Header add X-Permitted-Cross-Domain-Policies "all"
</Files>
 

■メタポリシーの優先度について

 
X-Permitted-Cross-Domain-Policies ヘッダの方が、優先的に動作します。
 
マスターポリシーファイルの <site-control> 要素は、サーバー全体の、基礎的なメタポリシー設定として機能するでしょう。
 
マスターポリシーファイルを、絶対的に優先させる方法もあります。
 
■メタポリシーの "none-this-response" 設定について
 
サーバー管理者が、マスターポリシーファイルを、強制したい場合に指定します。
 
ポリシーファイルの設置を、絶対的に許しません。
 
X-Permitted-Cross-Domain-Policies ヘッダを、"none-this-response" 値で上書きします。
 
バックドアの恐れがあるポリシーファイルなど、まとめて無力化できます。
 
例えば、CGI スクリプトから、動的に出力されるポリシーファイルです。
 

■サーバーにポリシーファイルを設置する(全体設定)

 
自身は、「http://my.com」を管理しているとします。
 
「http://other.com/flash.swf」に「Flash ムービー」があるとします。
 
「Flash ムービー」から「http://my.com」内のリソースを読みたいとします。
 
1.マスターポリシーファイルを設置する(サーバー側)
 
サーバー全体にポリシーを適用するには、マスターポリシーファイルを設置します。
 
「http://my.com/crossdomain.xml」に格納します。
 
「http://other.com」からのアクセスを許す例です。
 
「other.com」内の Flash から、読み取りアクセスされる事を許す

<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM "http://www.adobe.com/xml/dtds/cross-domain-policy.dtd">

<cross-domain-policy>
	<allow-access-from domain="other.com" />
</cross-domain-policy>
 
2.マスターポリシーファイルを読み込む(Flash 側)
 
大抵の場合、何もする必要はありません。
 
コンテンツの種類によっては、loadPolicyFile() メソッドの呼び出しが必要です。
 
「http://my.com/crossdomain.xml」のポリシーファイルを読み込みます。
 
my.com のマスターポリシーファイルを読み込む

import flash.system.Security;

// マスターポリシーファイルを読み込む
Security.loadPolicyFile( "http://my.com/crossdomain.xml" );
 
3.動作確認する
 
読み取りアクセスが可能になりました。
 

■サーバーにポリシーファイルを設置する(フォルダごとに設定)

 
自身は、「http://my.com/sub/」を管理しているとします。
 
「http://other.com/flash.swf」に「Flash ムービー」があるとします。
 
「Flash ムービー」から「http://my.com/sub/」内のリソースを読みたいとします。
 
1.ポリシーファイルを設置する(サーバー側)
 
フォルダごとにポリシーを適用するには、ポリシーファイルを設置します。
 
ポリシーファイルを、「http://my.com/sub/crossdomain.xml」に格納します。
 
「http://other.com」からのアクセスを許す例です。
 
「other.com」内の Flash から、読み取りアクセスされる事を許す

<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM "http://www.adobe.com/xml/dtds/cross-domain-policy.dtd">

<cross-domain-policy>
	<allow-access-from domain="other.com" />
</cross-domain-policy>
 
2.メタポリシーを設定する(サーバー側)
 
サブフォルダに格納したポリシーファイルは、デフォルトでは無効です。
 
有効にするには、メタポリシーの設定が必要となります。
 
マスターポリシーファイルを設置し、メタポリシーを設定します。
 
「http://my.com/crossdomain.xml」に格納します。
 
すべてのポリシーファイルを有効にする例です。
 
サブフォルダごとに、ポリシーファイルの設置が可能となります。
 
すべてのポリシーファイルを有効にする

<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM "http://www.adobe.com/xml/dtds/cross-domain-policy.dtd">

<cross-domain-policy>
	<site-control permitted-cross-domain-policies="all" />
</cross-domain-policy>
 
3.マスターポリシーファイルが設置できない場合(サーバー側)
 
マスターポリシーファイルは、環境によっては設置できないでしょう。
 
X-Permitted-Cross-Domain-Policies ヘッダにて、メタポリシーを設定する事もできます。
 
最初のポリシーファイルに設定します。
 
.htaccess を使って、crossdomain.xml ファイルにヘッダを追加する

<Files "crossdomain.xml">
	Header add X-Permitted-Cross-Domain-Policies "all"
</Files>
 
4.ポリシーファイルを読み込む(Flash 側)
 
loadPolicyFile() メソッドを使用します。
 
「http://my.com/sub/crossdomain.xml」のポリシーファイルを読み込みます。
 
my.com のサブフォルダのポリシーファイルを読み込む

import flash.system.Security;

// サブフォルダのポリシーファイルを読み込む
Security.loadPolicyFile( "http://my.com/sub/crossdomain.xml" );
 
5.動作確認する
 
読み取りアクセスが可能になりました。
 

■ Flash からポリシーファイルを読み込む

 
Security.loadPolicyFile() メソッドを使用します。
 
Security.loadPolicyFile ( "URL" ) :Void
第01引数 Stringポリシーファイルが設定されている URL アドレスを指定
戻り値 Voidなし
 
サブディレクトリのポリシーファイルを読み込む

import flash.system.Security;

// サブディレクトリのポリシーファイルを読み込む
Security.loadPolicyFile( "http://example.com/sub/crossdomain.xml" );
 
マスターポリシーファイルを読み込む(コンテンツの種類によっては不要)

import flash.system.Security;

// マスターポリシーファイルを読み込む
Security.loadPolicyFile( "http://example.com/crossdomain.xml" );
 
■ポリシーファイルの読み込み完了について
 
loadPolicyFile() メソッドは、非同期実行です。
 
読み込み完了を知る方法はありませんが、問題はありません。
 
読み込み系の処理は、内部でキューに登録され、順番に実行されます。
 
loadPolicyFile() メソッドの後、すぐに読み込み系の API を実行できます。
 
■テキスト系ファイルにアクセスする場合
 
マスターポリシーファイルに限っては、自動的に読み込まれます。
 
この場合、loadPolicyFile() メソッドは不要です。
 
もしサブフォルダにポリシーファイルが設置されている場合、事前に loadPolicyFile() メソッドを実行します。
 
■メディア系ファイルにアクセスする場合
 
ポリシーファイルが、自動的に読み込まれることはありません。
 
クロスドメインポリシーを解除したい場合、事前に loadPolicyFile() メソッドを実行します。
 
■サブディレクトリのポリシーファイルを読み込んだ場合
 
まず、X-Permitted-Cross-Domain-Policies ヘッダが、チェックされます。
 
もし、メタポリシーが解決しなかった場合、次にマスターポリシーファイルが読み込まれます。
 
マスターポリシーファイルの <site-control> 要素がチェックされます。
 
この時点で、メタポリシーが決定します。
 
メタポリシーが解決し、アクセスも許可されたなら、その時点で終了します。
 
場合によっては、マスターポリシーファイルへのアクセスは、省略されます。
 


 

クロスドメインスクリプトについて

 


■クロスドメインスクリプトについて

 
■クロスドメインスクリプトとは?
 
「自身の Web ページ」に、「別のドメインに存在する Flash 」を読み込むとします。
 
「自身の Web スクリプト」から「外部 Flash 」を制御する事はできません。
 
「外部 Flash のスクリプト」から「自身の環境」を制御させる事もできません。
 
このリスクあるアクセスを実際に行う事を、クロスドメインスクリプトといいます。
 
クロスドメインスクリプトを行うには、制限を解除します。(リスクに注意)
 

■外部ドメイン下のコンテンツから、自身の Flash 環境への侵入を許可する

 
「自身の Flash」は、「外部ドメイン下の Flash 」を読み込む事が可能です。
 
「自身の Flash」は、「外部ドメイン下のコンテンツ」に読み込まれる事が可能です。
 
この時、サンドボックスにより、自身の環境は保護されており、不可侵です。
 
外部ドメイン下のコンテンツから、自身の Flash 環境への侵入を許可するには、Security.allowDomain() メソッドを使用します。
 
Security.allowDomain ( "ドメイン名" , ... ) :void
可変引数 String外部のドメイン名を指定。指定ドメインから制御される(侵入される)事を許可する。
すべてのドメインを許可する場合 "*" を指定。
複数のドメインを指定する場合、第02引数以降に順番に指定。
戻り値 voidなし
 
■自身がセキュア (https://) であり、アンセキュア (http://) な環境からの侵入を許す場合
 
Security.allowInsecureDomain() メソッドを使用します。
 
混在コンテンツ(Mixed Content)の状態に陥ります。
 
高いセキュリティリスクがある事に注意してください。
 
中間者攻撃の恐れがあります。
 
セキュア (https://) 同士であれば、allowDomain() メソッドだけで実現できます。
 
Security.allowInsecureDomain ( "ドメイン名" , ... ) :void
可変引数 String外部のドメイン名を指定。指定ドメインから制御される(侵入される)事を許可する。
すべてのドメインを許可する場合 "*" を指定。
複数のドメインを指定する場合、第02引数以降に順番に指定。
戻り値 voidなし
 

■ Flash と JavaScript を連携させている場合

 
Flash と JavaScript の連携については、こちらで解説しています。
 
「http://my.com/aaa.html」に格納された、「HTML 文書」があるとします。
 
「http://other.com/bbb.swf」に格納された、「Flash ムービー」があるとします。
 
「HTML 文書」内に「Flash ムービー」を読み込んで表示するとします。
 
ブラウザから、「http://my.com/aaa.html」を開いたとします。
 
■ http://my.com 側の処理について
 
allowScriptAccess パラメータに、"always" を設定します。
 
「http://other.com/bbb.swf」を表示し、bbb.swf から 自身の Web ページが制御される事を許す

<html>
  <body>

    <object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="550" height="400">
      <param name="movie" value="http://other.com/bbb.swf" />
      <param name="allowScriptAccess" value="always" />

      <embed type="application/x-shockwave-flash" allowScriptAccess="always" src="http://other.com/bbb.swf" width="550" height="400" />

    </object>

  </body>
</html>
 
■ http://other.com 側の処理について
 
allowDomain() メソッドに、「my.com」を指定します。
 
「my.com」ドメイン下のコンテンツから、自身の Flash 環境への侵入を許す

import flash.system.Security;

// ------------------------------------------------------------
// 「my.com」ドメイン下のコンテンツから、自身の Flash 環境への侵入を許す
// ------------------------------------------------------------
Security.allowDomain( "my.com" );
 

■ Flash 内に、別の Flash を読み込んでいる場合

 
Flash を読み込む方法については、こちらで解説しています。
 
「http://my.com/aaa.swf」に格納された、「Flash (A)」があるとします。
 
「http://other.com/bbb.swf」に格納された、「Flash (B)」があるとします。
 
「Flash (A)」内に「Flash (B)」を読み込んで表示するとします。
 
ブラウザから、「http://my.com/aaa.swf」を開いたとします。
 
■ http://my.com 側の処理について
 
allowDomain() メソッドに、「other.com」を指定します。
 
「http://other.com/bbb.swf」を表示し、bbb.swf から自身の Flash 環境への侵入を許す

import flash.display.DisplayObjectContainer;
import flash.display.Loader;
import flash.net.URLRequest;
import flash.system.Security;

// ------------------------------------------------------------
// Document オブジェクト(メインタイムライン)を取得する
// ------------------------------------------------------------
var document_obj:DisplayObjectContainer = stage.getChildAt(0) as DisplayObjectContainer;

// ------------------------------------------------------------
// 「other.com」ドメイン下のコンテンツから、自身の Flash 環境への侵入を許す
// ------------------------------------------------------------
Security.allowDomain( "other.com" );

// ------------------------------------------------------------
// Loader オブジェクトを作成して表示する
// ------------------------------------------------------------
var loader:Loader = new Loader();

// Document の表示リストに登録する
document_obj.addChild(loader);

// ------------------------------------------------------------
// 「http://other.com/bbb.swf」を読み込む
// ------------------------------------------------------------
// URLRequest オブジェクトを作成する
var url_request:URLRequest = new URLRequest("http://other.com/bbb.swf");

// リクエストを指定して、読み込みを開始する
loader.load(url_request);
 
■ http://other.com 側の処理について
 
allowDomain() メソッドに、「my.com」を指定します。
 
「my.com」ドメイン下のコンテンツから、自身の Flash 環境への侵入を許す

import flash.system.Security;

// ------------------------------------------------------------
// 「my.com」ドメイン下のコンテンツから、自身の Flash 環境への侵入を許す
// ------------------------------------------------------------
Security.allowDomain( "my.com" );
 
 

 

JavaScript 実行のセキュリティについて

 
 


■スクリプトアクセス許可設定について

 
自身の HTML(JavaScript)が、埋め込んだ Flash と、相互スクリプトアクセスできる事を許可するには、allowScriptAccess パラメータを使用します。
 
Flash と JavaScript の連携については、こちらで解説しています。
 
■設定例
 
<object> タグに、allowScriptAccess パラメータを追加する

<object type="application/x-shockwave-flash" data="test.swf" width="550" height="400">
  <param name="movie" value="test.swf" />
  <param name="allowScriptAccess" value="samedomain" />
  プラグインは未対応です。
</object>
 
<embed> タグに、allowScriptAccess パラメータを追加する

<embed type="application/x-shockwave-flash" allowScriptAccess="samedomain" src="test.swf" width="550" height="400" />
 
■設定可能な値
 
デフォルト値は、"samedomain" です。
 
設定値 効果
"always" スクリプトアクセスを常に許可(Flash と HTML が別ドメインに置かれていても動作する)
"samedomain" 同じドメイン内に Flash と HTML が置かれている場合のみスクリプトアクセスを許可
"never" スクリプトアクセスは不可能
 
■セキュリティリスクについて
 
外部に存在する、不特定の Flash を、自身のサイトに表示すると危険です。
 
悪意のある Flash は、JavaScript を使って、自身のサイトを自由に改変できます。
 
また、サイト内の個人情報を収集し、外部に送信する事ができます。
 
不特定の Flash を表示するなら、"never" や "samedomain" が最適です。
 
■信頼する Flash が、別ドメインに存在する場合
 
allowScriptAccess パラメータに、"always" を指定します。
 
Flash 側にて、クロスドメインスクリプトの許可設定を行います。
 
クロスドメインスクリプトについては、こちらで解説しています。
 

■ローカル環境でのスクリプトアクセスについて

 
ローカル環境では、Flash と JavaScript の、相互スクリプトアクセスはできません。
 
制限は解除する事もできます。(リスクに注意)
 
「グローバルセキュリティ設定パネル」から、許可したい Flash を、信頼できるファイルとして登録します
 
この設定は、開発者向けのものであり一般的ではありません。