2011-01-21 17 views
0

私はプログラミングから「Webプログラミング」に移行していますので、これは私の質問には、いくつかの「非で「被害者サイト」で応答されたHTTPリクエストについてです 根本的な問題

あまりにも基本的に聞こえるかもしれHTML/XMLまたはJSONとして公開/機密情報を提供します。

犠牲者のサイトは、http要求の「非公開」情報で応答する前に認証のためにセッションクッキーに依存しています。

ajax HTTPリクエストを「被害サイト」にするJSがハッカーのサイトにあり、ユーザーが既に「被害サイト」にログインしているため、ブラウザに被害サイトのCookieがある場合。

ajaxリクエストは「被害者サーバー」によって応答されます。そうであれば、ハッカーJSはこの「非公開」情報をハッカーサイトに戻します。

どうすればこの問題を防ぐことができますか?

答えて

2
  1. AJAXを介して、AJAXが実行されているJS以外のドメインにはリクエストできません。

    被害者のサイトはexample.comで、ハッカーのサイトには、example2.comその後、example2.comからJSファイルがexample2よりも外側に別のサイトにAJAX要求を行うことができない場合には。

  2. クライアントが持つ犠牲者のサーバーからのCookieは、HTTP要求でハッカーのサーバーに送信されません。被害者のサイトに、そのサイトからハッカーにCookieを送信するために悪用される可能性のあるXSSがある場合、Cookieが盗まれる可能性があります。 http://en.wikipedia.org/wiki/Csrf

    が短いセッションクッキーの寿命を保つ:

+0

ありがとうございました... – Tiwari

+1

SanSSは正しいです、私は何かを追加したいです。 AJAXはクロスドメインの投稿に対して悪用されることはありませんが、ハッカーがクロスドメイン投稿を行う新しいフォームを生成したり、ページ上にiframeを持っていたりするため、JavaScript自体が悪用される可能性があります。ハッカーは犠牲者のクッキーにアクセスできないが、ハッカーがiframeを使用して犠牲者のサイトのレスポンスを読み込むと、ハッカーはjavascriptを使用して返された情報を読み取ることができる。 – Steven

0

ウィキペディアはアドバイスのいくつかの簡単なビットを有します。 15分間何も操作しなくてもログアウトすると、問題の犠牲になる可能性は低くなります。それほどフレンドリーではありませんが、データの価値に基づいて考慮する必要があります。

[Referer:ヘッダーがあなたのサイトから来ていることを確認してください。素晴らしいことではありません。うまくいかない。しかし、それは何かです。

ユーザー固有のフォームの内容を使用して、攻撃者が簡単なフォームを作成しないようにします。POST:Understanding the Rails Authenticity Tokenこのメカニズムは素晴らしいですし、フレームワークが役立つ場合、ほとんど無駄です。あなたのフレームワークがあなたを助けないなら、より良いフレームワークを考えるもう一つの理由です。 :

0

ajax厳密には(xmlhttprequest)、実際には一般的に同じドメインに限定されていると考えられていますが、多くはブラウザのセキュリティモデルを実装する方法によって異なります。私が気づいたことの1つは、Firefoxが通常の(クロスドメインではない)ajaxであってもクロスドメインリクエストを発行することですが、レスポンス全体がブロックされる(リクエストを中止してHTTP 206応答コードにつながるように見えます)。つまり、少なくともファイアウォールでは、通常のAjaxに対してもCSRF攻撃から「書込み呼び出し」を保護する必要があります。

このようなブラウザのグリッチの隣には、most browsersもxmlhttprequestsとともに使用できる 'cross domain resource sharing'をサポートしています。正しい方法で行われると、クロスドメインのajaxはかなり安全です。

しかし、CORSの採用は 'jsonp'の成功によって妨げられているようです。同じドメインのprincipelによって制限されていないコールバックパラメータでラップされたjsonのデータを含む動的に挿入されたスクリプト。これを安全な方法で実行する(つまり、攻撃者サイトが、クッキーが実際に送信されるログオンユーザーの犠牲サイトからのスクリプトを動的に挿入して実行するのを防ぐ)ことは、いくらか難しくなりますこれはクッキーに含まれていません)。

結論:従来のajaxを使用した読み取り操作は安全です。書き込みのためには、& jsonpを安全にするためにいくつかの追加作業を行う必要があります。もしあなたが本当にクロスドメインに行きたいのであれば、おそらくCORSOをjsonpの代替案として考えなければなりません。