8

Same Origin Policy をよりよく理解するために、誰か助けてくれませんか。説明しているウェブサイトをいくつか見たことがありますが、もっと簡単な説明を探しています。子供にどのように説明しますか?

このリンク は、私が見つけた中で最高の仕事をしているようです。誰でも拡張できますか?このポリシーが存在する理由を誰か説明できますか?

4

2 に答える 2

27

CSRFを防ぐには、同一生成元ポリシーが必要です。次のシナリオを想像してください。

  1. 銀行マネージャーの Joe Fatcat は、銀行の管理バックエンドに口座を持っています。この口座により、彼は TBtF Bank で銀行取引を行うすべての人の機密口座情報にアクセスできます。彼は誰かの暗証番号をリセットしたり、資金を送金したり、アカウントの所有権を変更したりすることさえできます.
  2. 現在、TBtF 銀行はジャックの IT 担当者を解雇しています。現在、彼は元 IT ガイのジャックであり、以前の雇用主に復讐したいと考えています。ジャックは銀行の管理バックエンドにアクセスできませんが、ジョーがアクセスできることは知っています。
  3. そこでジャックは上司に、ジャックが作成したページへのリンクを記載したメールを送信します。ページには、次のような JavaScript があります。


var xhr = new XMLHttpRequest(),
    data = "from="+victimAccount
           + "&to="+jacksAccount
           + "&amt=a+gazillion+dollars";
xhr.open("POST", "http://tbtfbank.tld/accounts/wiretransfer.aspx", true);
xhr.send(data);
  1. 翌日、Joe は自分のオフィスに到着し、いつものように自分の管理アカウントにログインし、バックグラウンドでタブを開いたままにします。
  2. ジョーは、ナタリー・ポートマンが熱いグリッツで覆われている写真へのリンクを含む電子メールを目にします。当然のことながら、彼はそれをクリックして、悪意のある Web ページを開きます。
  3. ブラウザはページで JavaScript を実行し、TBtF Bank の管理バックエンド サイトに AJAX POST リクエストを送信します。ジョーはすでにサイトにログインしており、アクティブなセッションを持っているため、銀行アプリケーションはコマンドを受け入れ、膨大な数のドルをジャックのオフショア銀行口座に振り込みます。

また、ジャックは同じ手法を簡単に使用して、何千もの口座番号や暗証番号、または銀行のマネージャーであるジョーが自分の口座からアクセスできるその他の情報を収集できたはずです。

幸いなことに、ジャックの悪意のあるページは銀行アプリケーションとは別のドメインでホストされているため、銀行アプリケーションに対して XHR を作成することは許可されていないため、ほとんどの場合、同一生成元ポリシーによってこの種の攻撃から保護されます。悪意のあるページには、銀行アプリケーションに GET リクエストを行う画像が含まれている可能性がありますが、GET リクエストを介して副作用のあるアクションを開始しないこと、およびアプリケーションが受信したリクエストのリファラー ヘッダーをチェックし、アンチ ヘッダーを利用することが重要です。 CSRF トークン。

于 2012-07-13T16:58:32.040 に答える
5

基本的には、同じドメインから提供されたスクリプトのみが、他のオブジェクトとプロパティに無制限にアクセスできることを意味します (したがって、.js名前付き関数が定義されたファイルがある場合は、同じドメインでホストされている他のファイルから呼び出すことができます)。

そのため、別のドメインからスクリプトを提供している場合は、制限適用されます。

このポリシーが存在するのは、別のドメインにある JavaScript ファイル (そのようなファイルへのリンクを挿入する JavaScript コードなど) へのリンクを挿入するのは簡単すぎるためです。これはセキュリティ上のリスクです。実際には、そこにあるコードだけではなく、現在のサイトからのコードのみを実行する必要があります。

于 2012-07-13T16:27:36.260 に答える