1

新しいサービスの API を開発し、この API 用の SDK (php、ruby、および JavaScript) を開発中です。

API への呼び出しの一部は公開されていますが、API キーと API シークレットが必要なものもあります。私の質問は、JavaScript API を使用している間、人々が自分の鍵と秘密を世界から隠せるようにするにはどうすればよいかということです。

私は次のような呼び出しを想像します:

jQuery.ajax({
    url:'http://api.domain.com/v1/display/',
    data: {offset:0, limit:0, apiKey:'apikeynotlikelogin',apiSecret:'apisecretlikepassword'},
    success: function(data){
        alert(data);
    }
});

しかし、最近のほとんどの人は、Chrome で firebug を開くか、さらに単純な ctrl+shift+j を開くと、上記のすべての情報と一緒にコードが表示されることを知っています。多くのオプションを検討しましたが、フロントエンドで apiKey と apiSecret を非表示にする方法がないように思えます。

助言がありますか?きっと何か方法があるに違いない。

ありがとう!

編集:

答えてくれて、問題を解決しようとしてくれてありがとう。ここにいくつかの答えがありますが、なぜまだ必要なものではないのですか:

  1. リクエストでドメイン名を使用して、正しいクライアントからのものであることを確認します。これは有効な提案ですが、それでも非常に簡単に偽造される可能性があります

  2. 呼び出しごとに一意のキーを生成する これはより高度なように思えますが、やはり私の場合には使用できないことがわかりました。ユーザーにはさまざまなレベルのプライバシー設定があり、それらのクライアントに応じて結果が提供されるため、「アプリ」を承認する必要があります (これは、資格情報を取得して API を承認するために人々がシステムに登録するものです)。

したがって、クライアントが最初に「ハンドシェイク」を呼び出してセッションの一意のキーを取得するようにした場合、(ハンドシェイクまたは次のリクエストで) クライアントは、API を承認して正しい結果を得るために、apiKey と apiSecret を送信する必要があります。 (ポリシーなどによる)したがって、最後は、ハンドシェイク リクエストがない場合とまったく同じです。それが理にかなっていることを願っています

4

1 に答える 1

0

難しくすることはできますが、本当に安全にすることはできません。

リクエスト元のページを登録してもらい、認証時にリクエストが正規の発信元からのものであることを確認できます。これは偽造できるため完璧ではありませんが、カジュアルなユーザーにとっては難しい.

または、サーバーを介してプロキシすることもできますが、プロキシへのアクセスを保護する必要があるため、これはあまり役に立ちません。

于 2013-01-26T01:07:18.320 に答える