web-dev-qa-db-ja.com

Content-Security-Policy:フレーム祖先「自己」との奇妙なレポートの取得

現在、私は https://www.lidl.de のContent-Security-Policyを維持しています。

Content-Security-Policy: frame-ancestors 'self'; block-all-mixed-content; report-uri https://lidlcsp.report-uri.io/r/default/csp/enforce;

フレーム祖先を持つ部分は、クリックジャッキングから保護することです。

Report-uri.ioに送信された違反レポートを通過するとき、1つ目は次のとおりです。

{
    "csp-report": {
        "blocked-uri": "",
        "document-uri": "https://www.lidl.de/",
        "original-policy": "frame-ancestors https://www.lidl.de; block-all-mixed-content; report-uri https://lidlcsp.report-uri.io/r/default/csp/enforce",
        "violated-directive": "frame-ancestors https://www.lidl.de"
    }
}

firefoxから送信されます(report-uri.ioが示すとおり)。ここで2つのことに戸惑っています。

  1. このレポートが送信されるのはなぜですか?再現できません。
  2. 「元のポリシー」が変更されるのはなぜですか(「自己」対 https://www.lidl.de )?これは何か違いがありますか?
  3. [〜#〜] edit [〜#〜])次のレポートでhttps://www.lidl.de/がブロックされるのはなぜですか? cspは'self'を介して同じサイトのiframeを明示的に許可します。

EDIT:3番目の質問をもう少し明確にするために、別のcsp-reportを追加します。

{
    "csp-report": {
        "document-uri": "https://www.lidl.de/",
        "effective-directive": "frame-ancestors",
        "original-policy": "frame-ancestors 'self'; block-all-mixed-content; report-uri https://lidlcsp.report-uri.io/r/default/csp/enforce;",
        "blocked-uri": "https://www.lidl.de/"
    }
}

CSP違反を再現できる場合、または他の違反をトリガーできる場合は、それらについてお知らせいたします。

5
HorstKevin

「元のポリシー」が変更されるのはなぜですか(「自己」対 https://www.lidl.de )?これは何か違いがありますか?

CSPの'self'は、実際には「同じドメイン」を表します。これは単なるプレースホルダーであるため、これはブラウザーによってhttps://www.lidl.deに対して評価されます。それはまさにあなたが言うべき指令です、それは単に別の方法で書かれています。いいえ、違いはありません

このレポートが送信されるのはなぜですか?再現できません。

これらのケースの90%での答えはブラウザのアドオンだと私はほぼ確信しています。クリーンなプロファイルと同じブラウザ/同じサイトでそれを本当に再現できない場合は、ブラウザ拡張機能が単に何かを挿入しようと試みているだけの可能性があります。これは、CSPレポートの非常に一般的なソース/トリガーです。

ただし、これは frame-ancestorsディレクティブ なので、簡単に再現できる場合があります。サイトを埋め込もうとするiframeを作成するだけです。

<iframe height="500" width="500" src="https://www.lidl.de"></iframe>

これは失敗し、CSPレポートがトリガーされます。それがクリックジャッキングの目的です。ユーザーのサイトが別のサイトに埋め込まれ、ユーザーに表示されずにクリックされるため、ユーザーはクリックしたくありませんでした。

Report-URIには、ブラウザーのアドオンによって引き起こされるそのようなレポートを防ぐためのフィルターがいくつかありますが、それらのすべてをキャッチすることはできません。


ところで:

フレーム祖先を持つ部分は、クリックジャッキングから保護することです。

それは可能ですが、実際には(より良い、あるいはより良い:さらに)ヘッダーX-Frame-Optionsをその目的で使用できます。このヘッダーは そのために設計されています であり、CSPをサポートしていないブラウザーでも機能します(いずれにせよ、それは古いバージョンです)。詳細については、 Report-URIと同じ作成者からのセキュリティヘッダースキャン を参照してください。その間、他のセキュリティヘッダーも確認できます。

3
rugk