2010-12-20 22 views
0

モジュール管理のWeb管理システム(データベース管理、CMS、プロジェクト管理、リソース管理、時間トラッキングなどのモジュールを含む可能性があります)の現在のプロジェクトでは、全体を公開したいシステムをRESTfulなAPIとして使用すると、システムをより使いやすくすることができます。システム自体はASP.MET MVC3でコード化されますが、すべてのデータ/アクションをRESTfulなAPIで利用できるようにすると、PHP、Ruby、Pythonなどでシステムを使いやすくする必要があります彼らが望むなら、特定のデータを管理するためのインタフェースを自分自身に作る)。RESTful APIを保護する

しかし、RESTfulなAPIを使って(ユーザーがRESTful APIの観点から)難しいと思われるものの1つは、ajax機能を備えたセキュリティです。セットアップと使用が複雑なものが必要だった場合は、SOAPサービスを作成するだけですが、RESTful APIを使用するためのドライブ全体は非常に簡単です。ユーザーに関連付けられたキーを使用してRESTful APIを保護する最も一般的な方法です。これは、サーバー側ですべての呼び出しが完了しても機能しますが、ajax機能を開始すると変更されます。私は、RESTfulなAPIをjavascriptから直接呼び出せるようにしたいと思いますが、誰かがファンクバグを起こしていると、そのユーザーが使用しているキーに簡単にアクセスできるようになり、その人がシステムにアクセスできるようになります。 RESTfulなAPIのユーザーに複雑なことをさせない、RESTfulなAPIの安全な方法はありますか?

+0

[REST認証とAPIキーの公開](http://stackoverflow.com/questions/5472668/rest-authentication-and-exposing-the-api-key)も参照してください。 – Arjan

答えて

0

APIのユーザーが自分のキーを公開しないようにすることはできません。

APIのクライアントを作成している場合は、HTMLページがユーザーのデータを提供している間に、サーバー側からAPIへのリクエストを行うことをお勧めします。 APIを呼び出すためにJavascriptを絶対に使用しなければならず、依然として問題のページを埋め込むサーバー側がある場合は、タイムスタンプに依存する一方向ダイジェストアルゴリズムを使用して実際のキーを隠すことができます。あなたのapiがそのダイジェストを時間依存的にチェックするようにします。

また、OAuth Noncesとタイムスタンプをもう少し詳しく見てみることをお勧めします。 Twitterや他のAPIプロバイダにも明らかにこの問題があります。したがって、彼らはNonce値で何かをしているに違いありません。

+0

私はユーザーが自分のキーを公開するのを防ぐことができないと理解しています。私は、サーバーとクライアントの両方がAPIにリクエストを行う方法を提供したいと考えています。私はダイジェストアクセス認証をより詳しく調べます。 – ryanzec

0

javascriptからリクエストにより署名をすることは可能です。しかし、私は熱心で、どのように 'RESTfull'のURLがこの余分な情報となるのでしょうか。そしてそこには同じ問題があります。あなたの作った署名アルゴリズムを見ることができる人は誰でも自分の署名を作ることができます、あなたが受け入れる魔法使いも受け入れます。

関連する問題