ドメイン間でデータをフェッチするサーバー側プロキシを簡単に書くことができたため、クライアント側のAJAXがドメイン間で呼び出しを行うことを阻止するための初期の意図はありませんでした。私は推測を求めているわけではなく、単に開発者に軽度の不便さを与えるだけではなく、彼らが行っていると思ったことについて、言語デザイナー(またはそれらに近い人物)からのドキュメンテーションを探しています。AJAXクロスドメインセキュリティの背景には何がありますか?
TIA
ドメイン間でデータをフェッチするサーバー側プロキシを簡単に書くことができたため、クライアント側のAJAXがドメイン間で呼び出しを行うことを阻止するための初期の意図はありませんでした。私は推測を求めているわけではなく、単に開発者に軽度の不便さを与えるだけではなく、彼らが行っていると思ったことについて、言語デザイナー(またはそれらに近い人物)からのドキュメンテーションを探しています。AJAXクロスドメインセキュリティの背景には何がありますか?
TIA
ブラウザがリバースプロキシとして動作するのを防ぐにはです。あなたのオフィスのPCからhttp://www.evil.comを閲覧していて、そのオフィスに、ローカルネットワークからのみアクセス可能な機密情報のあるhttp://intranet.company.comがあるイントラネットが存在するとします。 クロスドメインポリシーが存在しない場合、www.evil.comはブラウザをリバースプロキシとしてhttp://intranet.company.comにajaxリクエストを行い、その情報を別のAjaxリクエストとともにwww.evil.comに送信することができます。
これは私が推測する制限の理由の1つです。
はい、それは...)...私の答えよりもはっきりと分かりました。私は道を失いました。 – fguillen
*はるかに遠くに見えるようです。あなたのイントラネットには、evil.comが電話をかける方法を知らなければならないAJAXレスポンダが必要です。それが本当に懸念されるのであれば、イントラネットでCGIを実行することはできません。 –
@GrabrielJürgensは、ドメイン間ポリシー_がなければイントラネット内の任意のURI(CGIだけでなく、AJAXレスポンダが何であるかわからない)が侵害されていると述べています。攻撃者は、呼び出す特定のURIを知ることができます。または無差別な試行を強制することは重要ではありません。実際のセキュリティ上の問題です。 – fguillen
この制限のために最も重要な理由は、セキュリティ上の問題である:JSONリクエストメイクブラウザがサービスを提供し、別のドメインへの要求にクッキーやセキュリティ証明書を受け入れる必要がありますか?これは、クライアント側の環境に直接アクセスすることができないため、サーバー側のプロキシでは問題になりません。 a proposal for safe sanitized JSON-specific request methodsがありましたが、まだどこにも実装されていませんでした。
あなたがmyblog.comの著者で、facebook.comにXHRを作成している場合は、要求があなたのFacebook Cookieの認証情報を送信する必要がありますか?いいえ、それはあなたのブログからユーザーのプライベートなFacebookの情報を要求できるということです。
プロキシサービスを作成すると、プロキシはそのFacebookブックCookieにアクセスできません。
JSONPが問題ないのはなぜか疑問に思うかもしれません。理由はあなたが書かなかったスクリプトをロードしているからです。facebookのスクリプトがJSコードから情報を送ることを決めるのでなければ、あなたはそれにアクセスすることができません。
私はXHRに慣れていないかもしれません...クッキーを取り出して調べるためにXHRに固有の能力はありますか?私はクッキーが別の仕組みだと思っていました.XHRは、HTTP要求のためのデータ転送メカニズム(特に排他的)でした。 –
XHRはHTTP要求です。接続しているドメインのCookieを送信します.HTMLページやそのドメインからイメージをリクエストしたり、XHRを自分のページに作成したり、イメージやスクリプト、または別のサーバからのiframeさえもあります。 –
ダイレクトアクセスとプロキシは、1つの起源に完全に制限されたクッキーおよび他のセキュリティ関連の識別/検証情報である。
これでブラウザは機密データにアクセスできます。あなたのプロキシは、ユーザのログインデータを知らないので、プロキシはしません。
したがって、プロキシはパブリックデータにのみ適用されます。 CORSと同じです。
私はあなたが専門家の回答を求めている知っている、私は初心者だし、これはサーバ側プロキシが適切な最終的な解決策ではない理由に私の意見です:を構築
document.domain
を修正してください。そして、最も重要:
あなたの質問を再読み込みした後、私はまだ答えなかったと思いますので、なぜこのAJAXセキュリティですか?、再び私が思うに、答えは次のとおりです。
はあなたが訪問するすべてのWebページがあなたのオフィスのイントラネットへ任意のコンピュータやサーバにデスクトップから呼び出しを作ることができるようにしたくないので
、これは完全な赤いニシンです。イントラネットがcgi要求を取得して処理するように設定されている場合、そのページはそれらの利点を活用する可能性があります。これは単に実世界の関心事ではありません! –
http://msdn.microsoft.com/en-us/library/cc709423(v=vs.85).aspx – user1096188
http://code.google.com/p/browsersec/wiki/Part2#Same-origin_policy_for_XMLHttpRequest読書に値する本全体。 – jasssonpet
@jasssonpet素晴らしいリンク、それをブックマークしました! –