Flashから別ドメインにあるファイルにアクセスする際には、読み込みたいファイルが置いてあるサーバにカスタムポリシーファイルを設置する必要があります。 このファイルの設定や読み込み方にはまったので、まとめてみたいと思います。

  • 基本的な記述方法

    例をあげますと

    <?xml version="1.0"?> <cross-domain-policy> <site-control permitted-cross-domain-policies="all"/>//必須ではない <allow-access-from domain="level0.cuppy.jp" to-ports="80" secure="true"/> </cross-domain-policy>

    のような形になります。
    各属性に設定できる値は、

    <?xml version="1.0"?> <cross-domain-policy> <site-control permitted-cross-domain-policies=meta-policy-attribute/> <allow-access-from domain=domain-attribute to-ports=ports-attribute secure=secure-attribute/> </cross-domain-policy>

    とすると、
    ○meta-policy-attribute(許可されるポリシーファイルの設定)に設定できる値
    • all : すべてのポリシーファイルが許可されます。(デフォルトで設定されます)
    • by-content-type : Content-Typeがtext/x-cross-domain-policyのもののみ許可されます。(HTTP,HTTPSサーバのみ使用可)
    • by-ftp-filename : ファイル名がcrossdomain.xmlであるもののみ許可されます。(FTPサーバのみ使用可)
    • master-only : マスターポリシーファイル(/crossdomain.xmlにあるもの)のみ許可されます。
    • none : 許可されません。
    • none-this-responce : HTTPレスポンスヘッダのみ指定できます。
    ○domain-attribute(リクエスト元ドメインを設定)に設定できる値
    • *(すべてのドメイン、IPアドレスからアクセスが許可されます)
    • hoge.com(hoge.comのみ許可)
    • *.hoge.com(hoge.comとサブドメインは許可されます)
    • IPアドレス
    ○ports-attribute(ポート制限の設定)に設定できる値
    • *(すべてのポートを許可)
    • 100(100番ポートのみ許可)
    • 100, 200(100番ポートと200番ポートのみ許可)
    • 100-200(100番から200番のポートを許可)
    • 100, 150-200(100番と150番から200番のポートを許可)
    ○secure-attribute(セキュア領域のファイルにアクセスさせるどうか)に設定できる値
    • true(デフォルト)→アクセスを許可しない
    • false→アクセスを許可する

  • ポリシーファイルの設置場所

    基本的にはドキュメントルートにcrossdomain.xmlとして設置します。


  • 特定の位置にポリシーファイルを置いて読み込むには

    System.security.loadPolicyFile("hoge.com/hoge.xml");

    で明示的に指定の場所のカスタムポリシーファイルを読み込む事ができます。 注意点としては読みこんだポリシーファイルによって要求が許可されなかった場合 には、ドキュメントルートのcrossdomain.xmlを自動的に読みにいきます。


  • ポリシ?ファイルのリクエストがリダイレクトされた場合 http://sample.com/hoge/crossdomain.xmlをリクエストして、 http://sample.com/fuga/crossdomain.xmlにリダイレクトされた場合には、許可されるのは http://sample.com/fuga/以下のものになります。

  • Content-Typeの値 FlashPlayer9.0.115.0からは、HTTP ヘッダの Content-Type が

    text/*
    application/xml
    application/xhtml+xml

    のどれかでないと、読み込んだポリシーファイルを無効とみなします。

ざーっと羅列してみましたが、セキュリティ関連は常にアップデートされていくので、定期的にまとめていかないといけないですね・・・。 誰かまとめてくれないかなぁと思う今日このごろです。

HTML5飯