2011-01-12 13 views
0

が言うから応答を検証する方法があります:ログイン用クッキーを検証検証のFacebookのJavaScript APIレスポンス

FB.api(
    { 
    method: 'fql.query', 
    query: 'SELECT name, pic FROM profile WHERE id= ' + FB.getSession().uid 
    }, 
    function(response) { 
    //... 
    } 
); 

が提供SIGパラメータに比べてMD5ハッシュとアプリケーションの秘密鍵を使用して十分に簡単です。しかし、APIコールの場合、誰かが火かき棒を使ってレスポンスを変更するのを止めるだろうか?明らかに、これは機密情報のためにバックエンドで行うことができますが、私は可能な限りクライアント側でFacebookへの前後の帯域幅の多くを維持したいと思います。

どのような考えですか?

+1

※あなたの経験を破る以外には何もできないと思いますか? – ifaour

+0

のほとんどがあなたにスポットしています。しかし、そのユーザーのために取得して保存したい電子メールアドレスなど、いくつかの詳細があります。そのような情報については – used2could

+1

、私は 'email'の許可を得ていることを念頭に置いて、サーバー側の呼び出しから直接取得します! – ifaour

答えて

1

私は、ユーザーが使用すると、たとえばDBに保存する/これらの入力(応答)を取得し、それらを処理している場合を除き、アプリケーションの彼自身の経験を破る以外に何かできること有害を考えることはできません。

  1. ユーザーがFB状態を更新できる入力フィールドがあり、それを自分のDBにも保存したいのですか?
    この場合、通常の入力検証(mysql_real_escape..etc)を/ SHOULDします。
  2. ユーザーのメールを保存しますか?
    ユーザーが認証され、アプリケーションへのアクセス権を付与すると、サーバー側の呼び出しを使用してユーザーに関するほとんどすべての情報を取得できます。たとえば、ユーザーの電子メールを保存するには、email許可を取得して取得できる場合は、
0

JavaScript(1)で行う可能性のある検証は、ユーザーがJSを少し使って克服できたものです。

Facebookとの通信が安全で干渉されないようにする必要がある場合は、サーバーで行います。

(1)あなたがvalidateFacebookResponse(resp);機能を持っていた場合...エンドユーザは単に再宣言する機能に必要

...

function validateFacebookResponse(resp){ 
    return true;//always return true! 
} 

、あなたが持っていたすべての「セキュリティ」窓の外です。

+0

Scunliffe、クライアント側の検証機能に関して何を意味しているのか分かります。私が言及しているのは、セッション応答のためにfacebookから返される "sig"パラメータのようなものです。返されるパラメータとアプリケーションの秘密鍵のチェックサムです。秘密鍵を秘密にしておきたいので、これをサーバ上で検証します。私は他のAPI呼び出しが "sig"パラメータを含まないので、返されたパラメータを検証できないことに気付きました。 – used2could

+0

@ used2could - 私はちょっと混乱しているので、サーバーでこれらの呼び出しを行っていますか?電話をするときにURL /パラメータを指定する場所はどこですか?もしそうなら、Facebookがハッキングされなければ何も恐れることはありませんが、もしそうであれば、あなたの検証はとにかく安全ではありません。 – scunliffe

+0

Scunliffe、申し訳ありません、私は指定しませんでした。検証部分がサーバー上で実行されています。私はfacebook apiで経験を積んだ人は検証プロセスに精通していると思った。基本的に私は、FB.api呼び出しがFB.loginと同じように応答で署名パラメータを提供することを期待していました。 – used2could