ネットワーク API の制限

Flash Player 9 以降、Adobe AIR 1.0 以降

ネットワーク API は、2 つの方法で制限できます。悪意のあるアクティビティを防止するために、一般的に予約されているポートへのアクセスはブロックされます。これらのブロックをコードで上書きすることはできません。その他のポートに関してネットワーク機能への SWF ファイルのアクセスを制御するために、 allowNetworking 設定を使用できます。

ブロックされたポート

ブラウザーと同様に、Flash Player および Adobe AIR には、特定のポートへの HTTP アクセスの制限があります。HTTP 以外の種類のサーバーに使用されている特定の標準ポートには HTTP 要求が許可されません。

ネットワーク URL にアクセスする API は、これらのポートブロック制限の対象となります。例外は、ソケットを直接呼び出す API( Socket.connect() XMLSocket.connect() など)、またはソケットポリシーファイルがロードされる Security.loadPolicyFile() への呼び出しのみです。ソケット接続は、ターゲットサーバー上のソケットポリシーファイルの使用により許可または拒否されます。

次のリストは、ポートブロックが適用される ActionScript 3.0 API を示します。

FileReference.download() FileReference.upload() Loader.load() Loader.loadBytes() navigateToURL() NetConnection.call() NetConnection.connect() NetStream.play() Security.loadPolicyFile() sendToURL() Sound.load() URLLoader.load() URLStream.load()

ポートブロックは、共有ライブラリの読み込み、テキストフィールドでの <img> タグの使用および <object> <embed> タグを使用した HTML ページ内の SWF ファイルのロードにも適用されます。

ポートブロックは、共有ライブラリの読み込み、テキストフィールドでの <img> タグの使用および <object> <embed> タグを使用した HTML ページ内の SWF ファイルのロードにも適用されます。

次のリストは、ブロックされるポートを示します。

HTTP:20(FTP データ)、21(FTP 制御)

HTTP と FTP: 1(tcpmux)、7(echo)、9(discard)11(systat)、13(daytime)15(netstat)、17(qotd)、19(chargen)、22(ssh)、23(telnet)、25(smtp)、37(time)、42(name)、43(nicname)、53(domain)、77(priv-rjs)、79(finger)、87(ttylink)、95(supdup)、101(hostriame)、102(iso-tsap)、103(gppitnp)、104(acr-nema)、109(pop2)、110(pop3)、111(sunrpc)、113(auth)、115(sftp)、117(uucp-path)、119(nntp)、123(ntp)、135(loc-srv / epmap)、139(netbios)、143(imap2)、179(bgp)、389(ldap)、465(smtp+ssl)、512(print / exec)、513(login)、514(shell)、515(printer)、526(tempo)、530(courier)、531(chat)、532(netnews)、540(uucp)、556(remotefs)、563(nntp+ssl)、587(smtp)、601(syslog)、636(ldap+ssl)、993(ldap+ssl)、995(pop3+ssl)、2049(nfs)、4045(lockd)、6000(x11)

allowNetworking パラメーターの使用

SWF コンテンツを含む HTML ページで <object> および <embed> タグに allowNetworking パラメーターを設定することによって、ネットワーク機能に対する SWF ファイルのアクセスを制御できます。

allowNetworking に指定できる値は次のとおりです。

  • all 」(デフォルト)- SWF ファイルですべてのネットワーク API が許可されます。

  • internal 」- SWF ファイルは、この節の後半に示すブラウザーナビゲーションまたはブラウザーインタラクション API を呼び出すことはできませんが、その他のネットワーク API を呼び出すことができます。

  • none 」- SWF ファイルは、この節の後半に示すブラウザーナビゲーションまたはブラウザーインタラクション API を呼び出すことはできません。また、後半に示す SWF 間の通信 API を使用できません。

allowNetworking パラメーターは、主に SWF ファイルと上位の HTML ページのドメインが異なる場合に使用するために設計されています。ロードする SWF ファイルが上位の HTML ページと同じドメインにある場合は、意図した HTML ページと一緒に SWF ファイルが常にロードされることを保証できないので、「 internal 」または「 none 」の値を使用することは推奨されません。信頼されていないアクセス元は、ドメインから上位 HTML なしで SWF ファイルをロードできます。その場合、 allowNetworking の制限は意図したとおりに機能しません。

禁止された API を呼び出すと、SecurityError 例外がスローされます。

次の例に示すように、SWF ファイルへの参照を含む HTML ページの <object> および <embed> タグに allowNetworking パラメーターを追加して値を設定します。

<object classic="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" 
    Code base="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,124,0"  
    width="600" height="400" ID="test" align="middle"> 
<param name="allowNetworking" value="none" /> 
<param name="movie" value="test.swf" /> 
<param name="bgcolor" value="#333333" />  
<embed src="test.swf" allowNetworking="none" bgcolor="#333333"  
    width="600" height="400" 
    name="test" align="middle" type="application/x-shockwave-flash"  
    pluginspage="http://www.macromedia.com/go/getflashplayer" /> 
</object>

HTML ページでは、SWF 埋め込みタグを生成するスクリプトも使用できます。 スクリプトが正しい allowNetworking 設定を挿入するように変更する必要があります。 Adobe Flash Professional および Adobe Flash Builder で生成された HTML ページでは、 AC_FL_RunContent() 関数を使用して SWF ファイルへの参照を埋め込みます。次に示すように、スクリプトに allowNetworking パラメーターの設定を追加します。

AC_FL_RunContent( ... "allowNetworking", "none", ...)

allowNetworking が「 internal 」に設定されている場合は、以下の API を使用できません。

navigateToURL() fscommand() ExternalInterface.call()

前記のリストの API 以外に、次の API も allowNetworking が「 none 」に設定されている場合は禁止されます。

sendToURL() FileReference.download() FileReference.upload() Loader.load() LocalConnection.connect() LocalConnection.send() NetConnection.connect() NetStream.play() Security.loadPolicyFile() SharedObject.getLocal() SharedObject.getRemote() Socket.connect() Sound.load() URLLoader.load() URLStream.load() XMLSocket.connect()

選択された allowNetworking 設定により SWF ファイルがネットワーク API を使用することが許可されている場合でも、セキュリティサンドボックスの制限に基づいて他の制限が適用されることがあります( セキュリティサンドボックス を参照)。

allowNetworking が「 none 」に設定されている場合、TextField オブジェクトの htmlText プロパティの <img> タグで外部メディアを参照できません(SecurityError 例外がスローされます)。

allowNetworking を「 none 」に設定すると、ActionScript ではなく Flash Professional で追加された、読み込み済み共有ライブラリのシンボルは、実行時にブロックされます。