2017-01-27 7 views
0

の場合、フレーム祖先ディレクティブを取得します。私はframe-ancestors https://*.parent.comを設定した場合、私はframe-ancestors *.parent.comを設定した場合、我々は我々がhttps://child.comのための違反を持っている明白な違反 CSP url-scheme http://リソースのスキームがhttp://またはhttps://

  • を持って

    1. :私はhttps://child.comhttp://child.comの両方で私のページをロードするためにhttp://*.parent.comをできるようにしたいと言います。
    2. 私がframe-ancestors http://*.parent.comと設定すると、どちらの場合でも動作します。どうして ?
    3. CSP2 specから引用

  • ソース式は、URLスキームのための大文字と小文字を区別しない一致しない方式の部分がある場合、リターンがありません合わない。
  • ソース式は、スキームを持っていない場合は、次のいずれかに該当する場合、戻り値は一致しません:保護されたリソースのURLの
    1. スキームは、HTTPのための大文字小文字を区別しないマッチングで、かつ、URLスキームがありますHTTPまたはHTTPSの大文字と小文字を区別しない一致
    2. 保護されたリソースのURLのスキームは、HTTPの大文字と小文字を区別しない方式であり、保護されたリソースのURLのスキームではurl-schemeは大文字と小文字を区別しません。 https://child.comは、私は理解していることを、HTTPの一致ではないので、私の例の
  • ケース2は、スペックの条件5.2に従ってチョークなければなりません。
    しかし、なぜケース3はhttps://child.comで動作しますか?条件4によると、http://*.parent.comhttps://child.comのスキームと一致しないため、失敗するはずです。私は何が欠けていますか?

  • 答えて

    0

    child.comの両方https://child.comhttp://child.com

    ケース3

    CSPの方針で私のページをロードするためにhttp://*.parent.comを許可する目的:

    frame-ancestors http://*.parent.com 
    

    しかし、なぜケース3はhttps://child.comで動作しますか?

    一部child.comコンテンツをインラインフレームhttp://1.parent.com、例えば:

    <iframe src="https://child.com/mycontent"> 
    

    ....その後、/mycontentを要求するURLに対して、そのCSP frame-ancestors表現child.comチェックは、すなわち:

    http://1.parent.comはそう/mycontentが正常に返され、一致したhttp://*.parent.com、と比較されます。 がhttps://child.comのスキームと一致していません//*.parent.com:

    条件4によると、それは、http以来、失敗するはずです。私は何が欠けていますか?

    あなたが誤解しているように少し聞こえますframe-ancestors。あなたの例では、https://child.comに対するチェックはありません。チェックはchild.comで行い、/mycontentを要求するURLとhttp://*.parent.comを比較します。おそらく、frame-ancestorsframe-srcを混同していますか?

    スペックはわかりにくいですが、幸いなことに私はthis very helpful pageを見つけて、それをより理解しやすいものに変換しました。

    - CSPでのホワイトリストにホストがスキームを持っていない場合は、ブラウザがに許可されています:私は、関連するビットを引用します

    1 - ページ場合はHTTPまたはHTTPSを使用してロード資産をHTTPを使用して配信されます。

    2 - HTTPSを使用してページが配信されている場合、HTTPSを使用してアセットを読み込みます。私は仕事が暗黙のうちに、両方httphttps要求を許可するようにすべきCSP式からURLスキームを省略し、やったの周りのすべての読み取りから

    。しかし、実際には、frame-ancestorsで、それは私のために働いていない....まったく....そしてそれはブラウザ間で一貫しています。だから、CSP frame-ancestorsを使用しての私の実際の経験は、彼らがサイトのコンテンツをiFrameにできるように、サイトへのアクセスを許可するために、私は自分のサイトの中にURLスキームとドメインの前に付ける必要があることを信じるように私を導いた

    CSP frame-ancestors式。

    一般的に、私は例えば、したがって、私は必要があるだろう、httphttpsの両方を許可したいと思う。:

    frame-ancestors http://*.parent.com https://*.parent.com 
    
    関連する問題