接続がHTTPSであるので、あなたがワイヤ上で送信何が安全な(理論的には、あなたを提供していますmitm 'd)ではありません。 API全体がHTTPS上で提供されているかどうかはわかりません(指定していない)ので、ログインの一部としてキーを返すことはできますが(HTTPSの傘下にある)、APIの残りの部分がHTTPSの場合、次の要求でキーを盗聴する可能性があります。
セッションとCookieは、通常、RESTfulアプリケーションの一部ではありません。 RESTはステートレスです。
HTTPS以外の場合(HTTPSでもうまくいく)、回転キーのようなものが良いでしょう。あなたはHTTPS経由でログインし、サーバーはapiキーを返し、次のリクエストでそれを使用し、サーバーは新しいapiキーを返し、次のリクエストでそれを使用します。それは非HTTPS上の単一のAPIキーよりも優れていますが、完璧ではありません。誰かが後続のリクエストの1つから応答を盗聴し、そのキーを消費しなくても、それを使用することができます。これにより、クライアントからサーバーへのリクエストがスニッフィングされた場合、正当なリクエストによってapiキーが既に消費されているため、攻撃ベクトルをサーバーからクライアントへの非HTTPSレスポンスに縮小します。ただし、HTTPS経由でAPIを提供していない場合は、APIを保護するためにさらに多くの作業を行う必要があります。
私の場合は、+ httpsに署名するリクエストを調べます。ここで署名要求のいくつかの話があります:https://stackoverflow.com/a/8567909/183254
クライアント
function get_calendar(){
var key = $('#api_key').value();
$.ajax({
type: 'get',
url: '/index.php/api/calendar?key=' + key,
success: function(response){
// show calendar
// ...
// set received api key in hidden field with id api_key
$('#api_key').value(response.api_key)
}
})
}
上の擬似コードの例JS機能
http://net.tutsplus.com/tutorials/php/working-with-restful-services-in-codeigniter-2/
のAPIを確保セクションで認証をダイジェストでいくつかの情報もあります
コントローラの例:
function calendar_get($api_key = ''){
if($api_key_matches){//verify incoming api key
$r = array();
$r['calendar'] = $this->some_model->get_calendar();
$r['api_key'] = $this->_generate_api_key();// generate or get api key
}
$this->response($r);
}
また、ユーザーを認証するためだけにApiキーを使用する方法を使用すると、セキュリティが十分に保護されていることがわかりました。アプリケーション内のデータが壊れているため、セキュリティが心配です – ahmedsaber111