カスタムポリシーファイルの記述と読み込みのまとめ
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レスポンスヘッダのみ指定できます。
- *(すべてのドメイン、IPアドレスからアクセスが許可されます)
- hoge.com(hoge.comのみ許可)
- *.hoge.com(hoge.comとサブドメインは許可されます)
- IPアドレス
- *(すべてのポートを許可)
- 100(100番ポートのみ許可)
- 100, 200(100番ポートと200番ポートのみ許可)
- 100-200(100番から200番のポートを許可)
- 100, 150-200(100番と150番から200番のポートを許可)
- 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
ざーっと羅列してみましたが、セキュリティ関連は常にアップデートされていくので、定期的にまとめていかないといけないですね・・・。 誰かまとめてくれないかなぁと思う今日このごろです。