<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>creator note &#187; セキュリティ</title>
	<atom:link href="http://creator.cotapon.org/articles/category/%e3%82%bb%e3%82%ad%e3%83%a5%e3%83%aa%e3%83%86%e3%82%a3/feed" rel="self" type="application/rss+xml" />
	<link>http://creator.cotapon.org</link>
	<description>こたぽんがWebクリエイターに限らず動画や写真、書道までマルチクリエイターになれるまで終わりなく書き続けます</description>
	<lastBuildDate>Mon, 30 Jan 2012 06:27:52 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>crossdomain.xmlをルート以外の設置からでも認識させる方法</title>
		<link>http://creator.cotapon.org/articles/flash/crossdomain-xml%e3%82%92%e3%83%ab%e3%83%bc%e3%83%88%e4%bb%a5%e5%a4%96%e3%81%ae%e8%a8%ad%e7%bd%ae%e3%81%8b%e3%82%89%e3%81%a7%e3%82%82%e8%aa%8d%e8%ad%98%e3%81%95%e3%81%9b%e3%82%8b%e6%96%b9%e6%b3%95</link>
		<comments>http://creator.cotapon.org/articles/flash/crossdomain-xml%e3%82%92%e3%83%ab%e3%83%bc%e3%83%88%e4%bb%a5%e5%a4%96%e3%81%ae%e8%a8%ad%e7%bd%ae%e3%81%8b%e3%82%89%e3%81%a7%e3%82%82%e8%aa%8d%e8%ad%98%e3%81%95%e3%81%9b%e3%82%8b%e6%96%b9%e6%b3%95#comments</comments>
		<pubDate>Mon, 01 Mar 2010 03:25:27 +0000</pubDate>
		<dc:creator>cotapon</dc:creator>
				<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[セキュリティ]]></category>
		<category><![CDATA[Flash Player]]></category>

		<guid isPermaLink="false">http://creator.cotapon.org/?p=840</guid>
		<description><![CDATA[ActionScriptでクロスドメインを認識させる方法は、 Security.loadPolicyFile("http://mysite.com/crossdomain.xml"); ↑たぶん、このようにスクリプトを書 &#8230; <a href="http://creator.cotapon.org/articles/flash/crossdomain-xml%e3%82%92%e3%83%ab%e3%83%bc%e3%83%88%e4%bb%a5%e5%a4%96%e3%81%ae%e8%a8%ad%e7%bd%ae%e3%81%8b%e3%82%89%e3%81%a7%e3%82%82%e8%aa%8d%e8%ad%98%e3%81%95%e3%81%9b%e3%82%8b%e6%96%b9%e6%b3%95">続きを読む <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>ActionScriptでクロスドメインを認識させる方法は、</p>
<pre>Security.loadPolicyFile("http://mysite.com/crossdomain.xml");</pre>
<p>↑たぶん、このようにスクリプトを書きます。</p>
<pre>Security.loadPolicyFile("http://mysite.com/sitemap/crossdomain.xml");</pre>
<p>↑状況によってはドキュメントルート直下に「crossdomain.xml」置けないときもあると思います。</p>
<p>ボクは事情により後者で設定してFlashを再生させると、、</p>
<pre>Error #2044: ハンドルされていない SecurityErrorEvent : text=Error #2048: セキュリティサンドボックス侵害
（※これはFlash Debug Playerからのアラートです）</pre>
<p>出た！出たよ！！出てしまったよ！！！(TOT)<br />
そこでFlashTracerでログを追跡してどんなエラーが出ているかを調べてみました。<br />
ここでクロスドメインの構造をサクッと説明しますが、ドキュメントルート以外のクロスドメインの方法は更に下のほうに書きます。</p>
<h2>crossdomain.xmlの設置と記述方法</h2>
<p>Flashのクロスドメイン問題はいにしえからある問題です。そもそもクロスドメインというのは、<b>swfファイルを貼り付けているHTMLをからみて、外部ファイルをロードするときに、そのファイルが置いてある場所は、HTMLファイルとは違うドメイン</b>という状態のことを指します。つまり、FlashPlayerは他人のドメインを攻撃してしまわないようにしているわけです。でも、世の中には写真共有サービスがあったりRSSコンテンツがあったりAPIなんかもあります。そういった場合は、<b>どこからでも情報を取得してもいいですよ。</b>といった感じに許可をすることができます。その許可をするための設定ファイルが、「crossdomain.xml」にあたります。</p>
<p>たとえば、自分のサイト「http://mysite.com」というサイトに表示させるFlashコンテンツが「http://hoge.com」というサイトにあるRSSをロードするとします。この場合、クロスしてますよね。hoge.comサイトは、mysite.comがRSSをロードしてもいいよ！と許可をする為に、「crossdomain.xml」をドキュメントルートの場所においてあげます。アドレスは</p>
<pre>「http://hoge.com/crossdomain.xml</pre>
<p>このようになります。実際に、この「crossdomain.xml」の中に何が書かれているか、<br />
<pre class="brush: xml; highlight: [4]; title: ; notranslate">
&lt;?xml version=&quot;1.0&quot;?&gt;
&lt;!DOCTYPE cross-domain-policy SYSTEM &quot;http://www.adobe.com/xml/dtds/cross-domain-policy.dtd&quot;&gt;
&lt;cross-domain-policy&gt;
&lt;allow-access-from domain=&quot;http://mysite.com&quot;/&gt;
&lt;/cross-domain-policy&gt;
</pre>
４行目にある記述で「http://mysite.com」と書いていると、<b>「http://hoge.com」のRSSは「http://mysite.com」からのみロードができる。</b>という事になります。</p>
<p>例えば、「http://mysite.com」を含むサブドメインにも許可をする場合は、「*.mysite.com」と書きます。<br />
<pre class="brush: xml; highlight: [4]; title: ; notranslate">
&lt;?xml version=&quot;1.0&quot;?&gt;
&lt;!DOCTYPE cross-domain-policy SYSTEM &quot;http://www.adobe.com/xml/dtds/cross-domain-policy.dtd&quot;&gt;
&lt;cross-domain-policy&gt;
&lt;allow-access-from domain=&quot;*.mysite.com&quot;/&gt;
&lt;/cross-domain-policy&gt;
</pre></p>
<p>全てのサイトからのアクセスを許可をする場合は、「*」だけを書きます。この設定はセキュリティに詳しい方に一回相談したほうがいいかもしれません。<br />
<pre class="brush: xml; highlight: [4]; title: ; notranslate">
&lt;?xml version=&quot;1.0&quot;?&gt;
&lt;!DOCTYPE cross-domain-policy SYSTEM &quot;http://www.adobe.com/xml/dtds/cross-domain-policy.dtd&quot;&gt;
&lt;cross-domain-policy&gt;
&lt;allow-access-from domain=&quot;*&quot;/&gt;
&lt;/cross-domain-policy&gt;
</pre></p>
<h2>ココからFlashのはなし</h2>
<p>実際にFlashで設定するSecurityメソッドは、「crossdomain.xml」がドキュメントルートに設置されてて、かつ、その内容の設定で問題なければ、わざわざクロスドメインポリシーファイルをロードする必要はありません。</p>
<pre>Security.loadPolicyFile("http://hoge.com/crossdomain.xml");</pre>
<p>↑このようにドキュメントルートにある「crossdomain.xml」をロードする記述はする必要がない。ということです。</p>
<p>んじゃ、どういったときにSecurityメソッドを使って「crossdomain.xml」をロードするのかというと、ドキュメントルートとは違う階層にある「crossdomain.xml」ファイルをロードするときに使います。例えば、ドキュメントルートであるhtdocsに、サブドメインごとにディレクトリを分けているとします。「content1」というディレクトリには外部からアクセスして欲しくないけど、「content2」というディレクトリにあるファイルは別のドメインからアクセス可能とするときに、「content2」にクロスドメインポリシーファイルを設置します。その時に、Flash側で書くスクリプトは、</p>
<pre>Security.loadPolicyFile("http://hoge.com/content2/crossdomain.xml");</pre>
<p>↑と書いて、ポリシーファイルをロードさせると、Flashは「content2」以下にあるコンテンツを表示させることができます。</p>
<h2>FlashPlayer10からの仕様変更</h2>
<p>前述のように、ドキュメントルートとは違う場所の「crossdomain.xml」を取得できてましたが、FlashPlayerのバージョン10からクロスドメインの設定ルールに少し変更が加えられ、<b>かならずドキュメントルートの「crossdomain.xml」を最初に参照する</b>使用に変更されました。もしドキュメントルートに「crossdomain.xml」がない場合、たとえ「http://hoge.com/content2/crossdomain.xml」ここの場所に設定ファイルを置いていても「Error #2044: ハンドルされていない SecurityErrorEvent : text=Error #2048: セキュリティサンドボックス侵害」といったエラーが出てしまいます。</p>
<pre>エラー : http://hoge.com/content2/rss.xml のリソースに対する、http://mysite.com/content.swf の要求者からの要求は、ポリシーファイルのアクセス権がないため拒否されました。
※FlashDebugPlayerのログ例</pre>
</p>
<h2>ドキュメントルートにメタポリシーファイルを設定する</h2>
<p>「crossdomain.xml」は、セキュリティポリシーを設定する記述のほかに、<b>セキュリティポリシー設定ファイルを管理するメタポリシー</b>としても使うことができます。つまり、ポリシーファイルのポリシーファイルということですね。これをドキュメントルートに設定すれば、FlashPlayer10以上でも、ドキュメントルート以外の「crossdomain.xml」をロードすることができます。その中の記述に、site-controlタグを記述し、permitted-cross-domain-policiesをallにすると、全てのディレクトリーの「crossdomain.xml」をロードすることを許可することを意味します。</p>
<p><pre class="brush: xml; highlight: [5]; title: ; notranslate">
&lt;!--ドキュメントルートに設定するメタポリシーファイル例--&gt;
&lt;?xml version=&quot;1.0&quot;?&gt;
&lt;!DOCTYPE cross-domain-policy SYSTEM &quot;http://www.adobe.com/xml/dtds/cross-domain-policy.dtd&quot;&gt;
&lt;cross-domain-policy&gt;
&lt;site-control permitted-cross-domain-policies=&quot;all&quot; /&gt;
&lt;/cross-domain-policy&gt;
</pre><br />
<pre class="brush: xml; highlight: [5]; title: ; notranslate">
&lt;!--ルートから「content2」ディレクトリの「crossdomain.xml」の記述例--&gt;
&lt;?xml version=&quot;1.0&quot;?&gt;
&lt;!DOCTYPE cross-domain-policy SYSTEM &quot;http://www.adobe.com/xml/dtds/cross-domain-policy.dtd&quot;&gt;
&lt;cross-domain-policy&gt;
&lt;allow-access-from domain=&quot;*.mysite.com&quot;/&gt;
&lt;!--*.mysite.comからの通信を許可をする--&gt;
&lt;/cross-domain-policy&gt;
</pre><br />
ActionScriptには下記とかく。</p>
<pre>Security.loadPolicyFile("http://hoge.com/content2/crossdomain.xml");</pre>
</p>
<h2>クロスドメインでのエラーが出た場合の確認方法</h2>
<p>一番単純なのは、外部画像やXMLなど、別ドメインから取得する場合、そのドメインのルートに「crossdomain.xml」があるかどうか確認してください。youtubeのクロスドメインは「<a href="http://www.youtube.com/crossdomain.xml">http://www.youtube.com/crossdomain.xml</a>」こうなります。ページが真っ白でしたらブラウザの「ソースを見る」で記述が確認できると思います。Flashコンテンツを制作しているなかで、もし、クロスドメイン設定ファイルがなければサーバーの管理者に問い合わせて、設置してもらうようにお願いする必要があります。詳しい「crossdomain.xml」の説明に関しては<a href="http://www.adobe.com/jp/devnet/articles/crossdomain_policy_file_spec.html">Adobeのデベロッパーセンターページ</a>に詳しく載ってます。<br />
<a href="http://www.adobe.com/jp/devnet/articles/crossdomain_policy_file_spec.html">http://www.adobe.com/jp/devnet/articles/crossdomain_policy_file_spec.html</a></p>
]]></content:encoded>
			<wfw:commentRss>http://creator.cotapon.org/articles/flash/crossdomain-xml%e3%82%92%e3%83%ab%e3%83%bc%e3%83%88%e4%bb%a5%e5%a4%96%e3%81%ae%e8%a8%ad%e7%bd%ae%e3%81%8b%e3%82%89%e3%81%a7%e3%82%82%e8%aa%8d%e8%ad%98%e3%81%95%e3%81%9b%e3%82%8b%e6%96%b9%e6%b3%95/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

