2012-01-14 9 views
2

このポリシーはなぜ作成されましたか?これには欠点があると私には思えます。必要に応じて、別のドメイン(JSONPなど)にアクセスする方法があります。そのような方針がなかったら誰のためにもずっと簡単ではないでしょうか?

しかし、私はそれを作成した人はスマートで、彼らは理由のためにそれをしたと思います。私はこの理由を知りたいです。Ajaxで同じ発信元ポリシーを実行する理由は何ですか?

答えて

0

セキュリティ。

あなたのサイトがユーザーからの入力を受け入れていない場合、私は悪いことをする可能性があります。たとえば、自分のサイトに入力したテキストにjavascriptを挿入して、自分のドメインにajaxを呼び出すことができます。誰かが私の入力を見たとき(あなたの質問を見るときのように)、そのJavaScriptが実行されます。あなたのウェブサイトが私のインスペクタでどのように働いているかを見て、あなたの意見にオブザーバーを加えて、ユーザーのデータを盗むことができました。

発信元ポリシーが同じであれば、自分のデータをajax経由で自分のドメインに送信できなくなります。それがどれほど簡単かを確認するには、シンプルなウェブサイトをお持ちの場合は、フォームのいずれかに以下を入力してデータを送信してください。

javascript:alert(document.cookie);

あなたは(あなたのフレームワークが自動的にあります)そのことについて何かをする手順を取らない場合、私はちょうどあなたのサイトにJavaScriptを注入して、誰かがそれを見たとき、それが実行されます。 (それは、javascriptを注入と呼ばれています)

今、私は少しより創造持って、いくつかのAjaxコードを追加想像....

ようなことを防ぐためにを必要とする、またはウェブを使用してデジタル自殺だろうブラウザは、 。

+1

これはかなり浅い答えのようです。あなたはそれを拡大しようとしていますか? – Davy8

+0

それはかなり基本的な質問です。私は基本的な答えを提供しました。あなたがもっと入るべきだと思うなら、私に知らせてください。 – hvgotcodes

+0

@hvgotcodes、JSONPなどのクロスドメインリクエストの既存のハックを使用してJavaScriptコードを注入できない – Sergey

9

同一生成元ポリシーは、主が、前述したようにクロスサイトリクエストフォージェリ(CSRF)を阻害するクロスサイトスクリプティング(XSS)から守るためのものではないです。

悪意のあるサイトは、他のホストによって明示的に許可されていない限り、他のサイトからデータを読み込むことはできません。

など。私がwww.malicious.comをブラウズすると、www.mybank.comで同時に認証されたセッションにアクセスできず、銀行のAJAXインターフェイスからデータの一部を要求し、ブラウザを使用してmalicious.comに送信することはできません。リレー。

この制限を意図された目的や公開情報として迂回するために、最新のブラウザでは、クロスソースリソース共有(CORS)プロトコルが実装されています。

+0

クロスサイトリクエストは許可されていますが、ブラウザがこのような場合にセッションデータを送信しない場合はどうなりますか? Malicious.comは誰でもアクセスできるようにmybank.comにアクセスできました。 – PawelRoman

関連する問題