2009-05-23 15 views
7

現在、RESTful API経由でサーバーとやりとりする完全にAJAXベースのアプリケーションを開発中です。私はAPIに対するXSRF攻撃から保護するための潜在的なスキームを考えました。AJAXスタイルのアプリケーションでのXSRFの保護

  1. ユーザーが認証し、また、 各リクエストで二重に提出され セッションクッキーを、受け取ります。

  2. 我々は、 JavaScriptでのOAuthコンシューマを実装するには、ユーザログを 時にトークンを取得し、そのトークンを持つすべての の要求に署名します。

私は私が私たちのAPIをサードパーティのアクセスを提供したいのですが、私はむしろ、2つの認証スキームを実装する必要がないと思います主な理由は、OAuthのアプローチに傾いています。

この状況でOAuthのコンシューマーが動作しない理由はありますか?

答えて

0

XSRFがすべてのRESTful要求のリファラーをチェックして、要求が同じドメインから来ていることを確認する最も簡単な方法です。セッションクッキーは状態を保持するために重要ですが、偽造された要求とともに送信されるため、XSRFを守ることはできません。メモリ要件が限られている組込みネットワークハードウェア上のリファラーベースのXSRF保護システムを見るのが一般的ですが、モトローラはほとんどのハードウェアでこの方法を使用します。これは最も安全なXSRF保護ではなく、トークンベースの保護が優れていますが、両方のシステムをXSSでバイパスできます。トークンベースのXSRF保護の最大の問題は、すべての要求を修正して修正するのに多くの時間がかかり、おそらくいくつかのリクエストが欠落することです。

same origin policyscan your site for xssを必ずお読みください。 2010年のOWASPトップ10を読むべきですA3-Broken Authentication and Session Management

4

ほとんどのAJAXライブラリは、XSRFの基本的な攻撃では偽装するのが難しい(XSSと組み合わせても可能ですが)、追加のヘッダ "X-Requested-With:XMLHttpRequest"を設定します。このヘッダが存在することを確認することは、すべてのリクエストがAJAXであることを期待するならば、深い防御戦略になります。

1

最初に2つのステップの要求を使用します。最初はサーバーに予期しないトークンを要求し、2つ目は予期しないトークンを要求します。

攻撃者はトークンを予測できず、それを読み取ることができないため(同じ発信元ポリシー)、2番目のクエリで有効なトークンを与えることはできません。

しかし、トークンを漏洩(彼らが上のグローバル変数に値に影響を与えるとするとき使用してJSONをキャプチャについて学ぶ)と読んでいないに注意してください:

http://www.google.com/search?q=xsrf+defence

関連する問題