2011-06-20 13 views
3

お読みいただきありがとうございます。jQueryフロントエンドを使用したREST Webサービスセキュリティ

私は、RESTful Webサービスで表し、その機能をサーバー側としてのフロントエンドおよび.NET MVCとjQueryを使ってセキュアなWebアプリケーションを開発したいと思います。この時点で、私は使用するセキュリティ計画を構想しようとしていますが、ベストプラクティスに関するアドバイスが必要でした(明らかに私はhttps/sslを使用しますが、もちろんそれ以上にあります)。

私はいつも私は、Webアプリケーションアーキテクチャのこのタイプで、それを採用する方法を把握しようと私の脳をラッキングされたが、私は途方に暮れてるので、秘密鍵のアプローチのファンになっています。基本的には、秘密鍵が生成され、クライアントに与えられるだけでなく、サーバーにも置かれるので、鍵はワイヤを介して送信されることはありません。各クライアント要求は、この鍵でデジタル署名されている必要があります。これは、通常はWebアプリケーションに表示される典型的なユーザー名/パスワード/セッションID構造に加えて行われます。

私の問題は、クライアント上の秘密鍵の実際のストレージです。 jQueryファイルはサーバー上にある.htmlなので、仮想Webディレクトリ以外のディレクトリにある秘密鍵ファイルにアクセスする方法はありません。また、秘密鍵ファイルを公開Webサイトに置くことで、あまりにも多くの秘密が失われることはありません。 :)ここで

は私がのようにそれが動作するようにする方法を次のとおりです。

  1. 一定間隔(5〜15分)で、バックエンド・プロセスは、それが両方で秘密鍵と場所を生成し、バックエンドデータベース、およびWebサーバー上の非公開の場所にあるファイルに保存されます。
  2. クライアントがリクエストを行うと、キーファイルから読み取られ、秘密鍵で要求にデジタル署名します。
  3. サーバーは要求を受信し、秘密鍵でそれをデコードします。

明らかに#2は問題です。なぜなら、javascriptを使って「秘密」(つまり非公開)ファイルにアクセスする方法がないからです。

は、私があまりにも偏執的であることかな?秘密鍵のアプローチは、ユーザー名/パスワード以上のセキュリティレベル(攻撃者は秘密キーと有効なユーザー名/パスワードが必要です)があり、5分ごとにキーを再生成すると、リスクが軽減されます。秘密鍵が漏れる。これにより、すべての要求が「認定」クライアントから行われることも保証されます。しかし、HTML/jQueryのようなコンパイルされていないコードを使ってどのように可能であるかわかりません。

誰もがRESTfulなWebサービスのセキュリティ方法上の任意の提案や記事を持っていますか?あなたがまだの場合は

感謝:)

ヴィンス

答えて

2

は、私がOAuth 1.02.0上のいくつかの読書をお勧めします。 Facebook、Netflix、Twitterなど、より大きなAPIで使用されています。 2.0は依然としてドラフトされていますが、それは誰でもそれを実装して使用するのを止めておらず、クライアントが使うのがよりシンプルだからです。より複雑で安全なものを望むように思えるので、1.0に焦点を当てたいかもしれません。

私はいつもネットフリックスのAuthentication Overviewは、クライアントのために良い説明であることが判明。

そして、すぐにグーグルがこの記事を投稿します:How-to: Secure OAuth in JavaScript