2012-04-05 4 views
13

私はRESTfulなJSON APIを構築しており、私はjson data theftCross-Site Request Forgeryを心配しています。制限を実施するための "Origin" HTTPヘッダの互換性

これらの問題の両方に対処するために作成された良い解決策は、Origin http headerです。しかし、私は、この方法が現代のすべてのブラウザと互換性がないと懸念しています。これは有効な懸念事項ですか?互換性の問題が原因でOrigin HTTPヘッダーが役に立たないのですか? HTTP referer checkを実行する際に起源を考慮する必要がありますか?

+0

オリジンはいいですが、Chrome拡張機能で変更できないヘッダーであるため、ホストのバックチェックも必要です。http://code.google.com/chrome/extensions/webRequest.html#life_cycle_footnote –

+0

@Devin G Rhodeすべてのhttpヘッダーは、CSRF攻撃を除き、偽装するのは簡単です。攻撃者が被害者のブラウザにChrome拡張機能をインストールできる場合、CSRFよりも大きな問題があります。 – rook

+1

@Rook攻撃者は、悪意のあるコードを拡張機能(独自の拡張機能やオープンソースのもの)に潜んで、人々がインストールするのを待つかもしれません。 「有用」であるために、特定のユーザ/マシンに向けられた攻撃である必要はありません。 –

答えて

7

互換性のあるブラウザと既知の問題の一覧を示します。あなたはこれらの制限と一緒に暮らすことができれば今、それはあなた次第です:

Can I use...

+0

このサイトには、 'content-security-policy'と' x-frame-options'を含むたくさんのものがありません – rook

+0

実際には、content-security-policy: http://caniuse.com/contentsecuritypolicy/embed/ agents = mobile&eras = -3、&links x-frame-optionsの場合: https://www.owasp.org/index.php/Clickjacking_Defense_Cheat_Sheet –

2

それは有効な関心事です。誰かがそれを完全にサポートしていない古いブラウザを使用している可能性があります。ベータ版にもバグがあるかもしれません。

JSON APIにX-Frame-Options: SAMEORIGINを追加して、誰かがあなたのサイトをiframeに含めないようにすることも検討してください。

返されたJSONレスポンスの前に特殊文字を追加して、手動でJSONデコーダで取り除くことも検討してください。 Why does Google prepend while(1); to their JSON responses?

さらにセキュリティを強化するために、リクエストごとにnonceを含めるようにして、フィッシングサイトではなくコードからのものであることを確認するリクエストに署名します。これはOAuth1.0の動作と似ています。あるいは、自動的に期限切れになる各セッションのトークンを生成し、必要に応じてトークンをリフレッシュすることもできます。これはOAuth2.0の仕組みです。これにより、たとえば、バグが見つかった場合にアクセスを無効にすることができ、古いクライアントをアップグレードする必要があります。

関連する問題