web-dev-qa-db-ja.com

HTTP / S <-> HTTP / Sクロスサイトリクエスト:サードパーティのWebサイトは、オブジェクトがどこから参照されているかについて何を知っていますか?

セキュリティ面で4つの一般的なクロスサイトリクエストの組み合わせがあります。いずれの場合も、ysite.comが、そのリソースの1つをダウンロードした理由が、それを参照する特定のURLにアクセスしたためであるかどうかを知りたいです。 (xsite.com/page.html)、または特定のURLでない場合は、サイト/ドメインはおそらく:

  1. https://xsite.com/page.htmlにアクセスします。 https://ysite.com/library.jsを参照します。
  2. https://xsite.com/page.htmlにアクセスします。 http://ysite.com/image.jpgを参照します。
  3. http://xsite.com/page.htmlにアクセスします。 https://ysite.com/library.jsを参照します。
  4. http://xsite.com/page.htmlにアクセスします。 http://ysite.com/image.jpgを参照します。

そして、ysite.comcannotリソースをダウンロードするために閲覧していたサイト/ URLを知っている上記の場合、画像またはjsファイルをから直接ダウンロードした場合と同じように見えますか?彼らのサイトのサーバーログに関しては、ブラウザのアドレスバー自体? TCPタイミングの微妙な違い、HTTPリクエストのHTTPヘッダー情報(またはその欠如)(または特定のHTTPの欠如)により、他のWebサイトへの埋め込みと比較して他の点で異なって見えるでしょうかGETリクエストのヘッダーはまったくありませんか?)、またはサーバーで確認できるトランスポート層またはアプリケーション層の相互作用のその他の違いはありますか?

興味深いのは、サイトが外部HTTPSドメインからの直接URL画像のホットリンクを防ぐことができるかどうかです。可能であれば、HTTPSホットリンクをブロックする方法が、画像のWebサーバーからのURLによって参照されることなく画像への直接アクセスを防ぐ方法でない限り、HTTPSサイトのURLがサードパーティのオブジェクトのWebサーバーにリークされる可能性があると思います。

1
user21377

ほとんどのブラウザ依存ですが、RFCによると、ケース2にはリファラーヘッダーがありません- セキュリティ上の理由 。他のすべての場合、RFCは、ユーザーがプライバシー設定(プライベートブラウジングなど)を構成していない限り、それを含めることができると述べています。

したがって、ケース1、3、および4の場合、ysiteはおそらくリファラー全体を取得しますxsite.com/page.htmlそしてケース2の場合、(おそらく)情報を取得しません。

そのため、ほとんどのCDN、広告、分析サイトにはjavascriptがあり、参照ページと同じプロトコル(http/https)に一致するようにリンクを書き換えることができます。

1
NuTTyX

あなたの質問に対する答えは、クロスサイトスクリプティングの制御はサイトレベルではなくブラウザレベルで実施されるため、ダウンロードがどこから来たとysiteが考えるかは問題ではなく、xsiteをロードしたブラウザが知っていることが重要だと思います。 ysiteへのロードが別のドメインからのものであること。

0
gowenfawr