Adobe Flex 3 ヘルプ

ActionScript

次の方法を使用して、ActionScript を使用する際のセキュリティの向上を図ることができます。

エラー処理

SecurityError 例外は、ある種のセキュリティ侵害が発生した場合にスローされます。セキュリティエラーが発生する状況には、次のようなものがあります。

  • セキュリティサンドボックスの境界をまたいで、許可されていないプロパティアクセスやメソッド呼び出しを実行した
  • セキュリティサンドボックスで許可されていない URL にアクセスしようとした
  • ポリシーファイルが存在しない環境で、許可されていないポート番号(例えば 1024 未満)に対してソケット接続を確立しようとした
  • ユーザーのカメラやマイクにアクセスしようとしたが、そのアクセス要求がユーザーによって拒否された

Flash Player は、SecurityErrorEvent オブジェクトを送出してセキュリティエラーの発生をレポートします。セキュリティエラーイベントは、すべてのターゲットオブジェクトに対して送出される最後のイベントです。つまり、セキュリティエラーが発生しているターゲットオブジェクトに対しては、一般的なエラーイベントを含むその他のイベントは送出されません。

イベントリスナーは、SecurityErrorEvent オブジェクトの text プロパティにアクセスして、試行された操作と、関連する URL を確認できます。次に例を示します。

<?xml version="1.0"?>
<!-- security/SecurityErrorExample.mxml -->
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" creationComplete="initApp()">
    <mx:Script><![CDATA[
        import flash.net.URLLoader;
        import flash.net.URLRequest;
        import flash.events.SecurityErrorEvent;
        import mx.controls.Alert;

        private var loader:URLLoader = new URLLoader();

        private function initApp():void {
            loader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);
        }
        
        private function triggerSecurityError():void {      
            // This URL is purposefully broken so that it will trigger a
            // security error.
            var request:URLRequest = new URLRequest("http://www.[yourDomain].com");
            
            // Triggers a security error.
            loader.load(request);
        }

        private function securityErrorHandler(event:SecurityErrorEvent):void {
            Alert.show("A security error occurred! Check trace logs for details.");         
            trace("securityErrorHandler: " + event.text);
        }
    ]]></mx:Script>

    <mx:Button id="b1" label="Click Me To Trigger Security Error" click="triggerSecurityError()"/>

</mx:Application>

前の例で実行する SWF ファイルは以下のとおりです。

イベントリスナーがない場合、デバッガ版の Flash Player は、テキストプロパティの内容を示すエラーメッセージを自動的に表示します。

一般に、try/catch ブロックのセキュリティエラーをトリガする可能性があるメソッドは、ラップするようにします。この結果、ユーザーには、宛先や、公開を希望しないその他のプロパティに関する情報が表示されなくなります。

デバッグ出力の抑制

Flash Player は、trace() メソッドまたはログ API からクライアント上のログファイルにデバッグ出力を書き込みます。すべてのクライアントはデバッガ版の Flash Player を実行できます。その結果、ログされた情報をクライアントが表示できないように、trace() メソッドに対する呼び出しや、デバッグ出力を生成するログ API 呼び出しを削除します。

カスタムコンポーネントとクラスでログ API を使用する場合は、コンパイルの前に、次の例のように LogEventLevel を NONE に設定します。

myTraceTarget.level = LogEventLevel.NONE;

ログ API の詳細については、ログ API の使用を参照してください。

ホストベースの認証の使用

IP アドレスと HTTP ヘッダーは、場合によってはホストベースの認証を実行するために使用されます。例えば、Referer のヘッダーまたはクライアントの IP アドレスをチェックして、要求が信頼できるソースから発行されたものであることを確認します。

ただし、Referer などの要求ヘッダーは簡単にスプーフィングできます。つまり、クライアントは、ヘッダの設定や IP アドレスのねつ造によって、他のものになりすますことができます。クライアントのスプーフィングの問題を解決するには、HTTP ヘッダーデータを認証メカニズムとして使用しないことです。

 

このページに新しいコメントが追加された場合に、電子メールでの通知を希望する。 | コメントレポート