0

REST エンドポイントを開発しているサイトがあります。

https://prefixone.somesite.com

また、UI フレームワークを開発している別のサイトがあります。

https://prefixtwo.somesite.com

ログインに成功し、IE で 200 応答を取得できます。FF と Chrome では、「405 METHOD NOT ALLOWED」というメッセージが表示されます。Chrome は、「XMLHTTPRequest は XXXXXXXXXXX を読み込めません。オリジン xxxxxxxxxxx は Access-Control-Allow-Origin によって許可されていません。

どちらのサイトも somesite.com にあります

この状況は依然として XSS と見なされますか?

4

3 に答える 3

2

あなたの質問は、「両方の URL が XXXX.com の形式であるにもかかわらず、なぜ 405 を受信するのですか?」ですが、実際には、あなたの URL は同じドメインからのものではありません。

xxx.yyyy.comzzz.yyyy.com同じドメインではありません。名前のかなりの部分を共有している場合がありますが、同じではありません。

これは、ドメイン内のサブドメインの所有者が完全に独立した人々によって運営される可能性が十分にあるためです。を検討してくださいuk.com。このドメインの所有者は、その中の第 3 レベル ドメインを、標準的な英国の国レベル ドメインの競合相手として販売していますco.uk

とのサイトは完全に異なるサイトでxxx.uk.comありzzz.uk.com、前者が同じオリジン ポリシー ルールに違反せずに後者からコンテンツをロードできるとは思わないでしょう。

ブラウザーは、どのドメインがこれを行い、どのドメインがそうでないかを認識していないため、安全にプレイし、任意の 2 つのサブドメインが別の人によって操作される可能性があると想定します。

でもyyyy.comwww.yyyy.comは同じものとは見なされません。

それがあなたの質問に答えることを願っています。

それをどうするかというと……。

1) すべてを同じサブドメインに配置します。サイトを複数のサブドメインに分割する最も一般的な理由はパフォーマンスのためですが、Google や Facebook を運用している場合を除き、パフォーマンスに影響を与える可能性は低く、最初に実行できる他のことがより役立つ可能性があります。また、新しい SPDY プロトコル (まもなく HTTP v2 に進化する予定) により、この手法は時代遅れになります。

2) 複数のサブドメインに分割する必要がある場合は、各サーバーに配置できるcrossdomain.xml ファイルを使用して、互いのコンテンツにアクセスするための明示的なアクセス許可を与えることを検討することをお勧めします。

于 2012-08-12T22:10:14.097 に答える
0

基本的に、コードではJavaScriptで以下を実行する必要があります。

document.domain = "somesite.com";

これにより、同一生成元ポリシーの目的で重要な部分がsomesite.comプレフィックス部分ではないことがブラウザに通知されます。

詳細については、Googleで「ドキュメントドメイン」を検索してください。

于 2012-08-11T23:44:43.967 に答える
0

同一オリジン ポリシーはこれを制限します。名前が示すように、ドメインではなくオリジンで機能します。オリジンは、完全なドメイン名 + プロトコル + ポート番号です。そのため、同じホストで実行されている 2 つのページであっても、ポートまたはプロトコルが異なる場合は通信できません。

新しいブラウザーのみをサポートする予定がある場合は、x-access-control ヘッダーの追加を検討してください。古いブラウザーをサポートする必要がある場合は、easyXDM などを参照してください。

于 2012-08-12T21:36:50.693 に答える