2016-04-05 5 views
5

を非表示にする方法を確認することはできません。だから私は、一般的に知っている- FacebookのためのAPIキー(共有]ボタンを実装する) - 私は私の角度アプリ宣言で次のコードを持って、このAPIにキー

.run(function($FB){ 
    $FB.init('9xxxxxxxxxxxx94'); 
}) 

をこれに答える - 「APIキーはサーバー側に保管する必要があります」しかし、実際にこれを実装する方法はわかりません。

株式呼び出しメソッドは、フロントエンドに作られているので、私のサーバーは、APIキーを保持し、それを送信した場合でも、確かにそれはどのように共有ボタンの仕事だろう他に、フロントエンドにはまだ目に見えるのか?

私の質問では、どうすればそのFacebook APIキーを隠すことができますか?

ありがとうございました。

+0

私はしばらくこのことを研究しています。私はキーを隠す決定的な方法はないと思うが、なぜFacebookはあなたに許可するだけではなく、クライアント側のjavascriptでこれをどのように使用するかを示してくれるのだろうかと思っている...私は現在、 FB上で開発者としてサインアップしてアプリを作成すると、特定の情報を入力する必要がありましたか?私は何が起こるかと思います.FBは秘密鍵でクレームに束縛しています.FBだけが知っています。そして、Web経由で情報を渡すと、情報が抽出され、鍵が改ざんされていないことを確認します。身元。 – samazi

答えて

5

起こるキー

まず最初に、クライアントがキーを要求することである要求。これは、サインアップやログインページのような特定のページでのみ発生します。ここでのアイデアは、既知のクライアント(この場合は公式ウェブサイトまたはコアクライアントと呼ばれる)でブラウジングしているユーザーだけが、ユーザーの作成や認証などの操作を実行できるようにすることです。

クライアントアプリケーションがログインページを要求すると、サーバーはリクエストで送信された情報に基づいて一意のトークンを生成します。使用される情報は、常にサーバーが知っているもの、クライアントが知っているもの、両方が知っているものです。たとえば、サーバはUser agent + current time + secret keyに基づいて一意の鍵を生成できます。サーバーはこの情報に基づいてハッシュを生成し、ハッシュのみを含むクッキーをクライアントマシンに保存します。

設定権限

この時点で私たちの鍵は本当にもうキーではありません。アクセストークンに変換されました。サーバーはこのアクセストークンを取得し、後で取得できるように格納する必要があります。キーをデータベースに入れることはできますが、このタイプのデータを頻繁に取得する必要があるため、Redisのようなキー値ストアを使用してデータベースの読み書きを減らし、パフォーマンスを向上させることをお勧めします。

トークンを格納するときは、トークンに関連付けられているアクセス許可を示す別のデータを格納する必要があります。この場合、私たちのトークンは、私たちは次のトークンが属する(アプリのWeb UI)とどのような権限、それは(ユーザーを作成し、認証するために制限される)している人を示す値にそれを保存するだけで、ユーザーを登録し、認証するための方法として機能しています。他のAPIクライアントと同様に扱い、統計情報を取得して使用方法を制御することができます。

クライアントは、新しいユーザーを作成したり、クライアントが要求とともに識別クッキーを送っかどうかをチェックするサーバーにログインするためのPOSTリクエストを行うと、要求

を承認。もしそうでなければ、我々はその要求を拒否する。それはクッキーを送信した場合、サーバーは再び以前に使用した値を使用してハッシュを生成する必要があります(私たちは本当に多くのサーバーに負担をかけていないので、これらの値はいずれかすでにとにかく要求で知られている、または送信されます)クッキーであることにそれを比較します値が一致する場合は要求が処理されます。

Sources - Securing API Keys

OR

単にあなたのサーバーにリクエストを送信し、彼は隠されたAPIキーを使用してリクエストを処理し、ちょうどあなたのフロントエンドにリクエストの結果を返すことができます。

関連する問題