web-dev-qa-db-ja.com

<img>呼び出しがSame Origin Policyに違反しないのはなぜですか?

同一生成元ポリシー(SOP)の主題について少し混乱しています。私が正しく理解している場合、SOPの目的は、あるページが別のWebページの機密データにアクセスするのを防ぐことです。

では、たとえば、なぜ別の場所から機密画像を取得できるのでしょうか。これはSOPの概念に違反します。

5
Eric Peers

crossorigin="anonymous"が設定されていない場合、Originのクロス画像とのやり取りはスクリプトで制限されているため、これは許容できると見なされます。 crossorigin="anonymous"を設定しないと、スクリプトは寸法を取得できますが、 汚染されたキャンバス のため、画像からのピクセルデータは許可されません。

これは理論的には問題ありませんが、過去にピクセルデータをリークするサイドチャネル attacks があったことがあります。

6
AndrolGenhald

アプリはIMGタグから機密データを取得できません。たとえば、<canvas>タグを使用してピクセルデータを読み取ろうとすると、CORSが使用されていない限り、ブラウザはSOP例外をスローします。画像は表示(人間のユーザーによる)がプログラムで検査されていない(JSコードによる)場合、画像ポリシーは「十分に良好」と見なされます。

mightは機密情報と見なされるリモート画像から画像の寸法を取得することが可能であることを指摘する必要があります。特に、異なる寸法の「良い/悪い」画像を表示する動的画像のURL一部のステータスに基づいて変更されます。それでも、その情報はごくわずかであり、通常はプライバシーの問題ではありません。また、画像の寸法は通常、ページレイアウトへの影響(スクリプトからアクセス可能)によってどのように導き出されるかを隠すことが難しいためです。

このポリシーを変更すると、コンテンツ配信ネットワークや画像などのアセットを表示するための「ディープリンク」を必要とする多くのサイトが機能しなくなります。

3
dandavis

Same Origin Policyは、統一されたクリーンな公理ではありません。実際には、特定のルールと現代のWebに化石化された特別なケースのセットです。重要な詳細を正しくキャプチャする短い短い説明で同一生成元ポリシーを定義することはできません。実際には、特別なケースが重要です。

CookieのルールはJSのルールであり、完全に適切に定義されておらず、ブラウザに依存していません。安全なWeb識別の設計で考慮されなければならないこれらの化石化されたルールのため、Cookieは現代のWebでは非常に弱く保護されています。

  • Cookieによって許可されるサブドメイン間の通信の程度は非常に役立ちます(あるサブドメインが別のサブドメインで使用されるCookieを設定できる)だけでなく、ブラウザーが設定したドメインの名前でCookieを送り返さないため、混乱の原因となる可能性もあります。それ。
  • Http Webページに設定されたCookieは、Originの表示なしに、https Webページの同じドメインに送り返されます。

反対に、ブラウザーストア( "cookie jar"と共に)にデータ(localStorageやsessionStorageなど)を格納できる最新のWebテクノロジは、正確なドメインおよびURLスキームでOriginによって厳密に分離されます。

(レイアウトがフレームセットページまたはiframeをホストしているページで指定されているフレーム要素とは異なり)指定された寸法のオブジェクトを使用して、別のサイトの画像を含める必要はないため、レイアウトはロードされた画像。少なくともWebページでは、画像のURLをロードできるかどうかを確認できます。これにより、たとえば、ユーザーがWebサイトにログオンしているかどうかを確認できます。

スクリプトとスタイルシートをロードするためのルールは特別です。これは、他のドメインとのインターフェースに役立つポリシーの穴です。サービスを提供するドメインからロードされたスクリプトは、いくつかの変数を設定して計算の結果を保存できます。リモートプロシージャコールを実行するこの非常に汚い方法は「JSONP」と呼ばれます。

そして、ページに表示または測定する権限がないリソースの読み込み時間を測定するためのサイドチャネルがあります...

1
curiousguy