2009-07-23 13 views
0

Facebookのiframeアプリケーションを作成するとき、facebookはGETパラメータとしてアプリケーションにパラメータを渡します。クエリ文字列内には、fb_sigというフィールドがあり、これはfacebookだけが作成できる一意のシグネチャです。FacebookのIframe Appのユーザのログイン状態を取得する

私が抱えている問題は、クエリ文字列をアプリケーションURLに簡単にコピーして、Facebookの外のどこからでもアプリケーションにアクセスできることです。 facebook APIが提供するメソッドは、特定の値に対してGETパラメータ/ COOKIEをチェックするだけです。 Facebookのユーザーのログイン状態を実際に返すことができるAPIメソッドがありますか(GETパラメータまたはCOOKIEを基にしない)。

私の意見では、誰もがブラウザのリクエストを追跡して別のユーザーのアカウントにアクセスするためのクエリ文字列を取得できるため、これは大きなセキュリティ上の欠陥です。また、facebookによって提供されるfb_sigパラメータは期限切れではないため、常に検証にパスすることができます。

私はHTTP_REFERERフラグをチェックして、リクエストがFacebookからのものであることを確認しましたが、多くの人がリファラーをSPOOFして無効にすることもできます。任意の提案や解決策?

答えて

0

getLoggedInUser()は、セッションに関連付けられたユーザーのuidを返します。セッションが最新でない場合は、有効なIDを取得できません。

残念ながら、セッションパッシングで説明する欠陥は、Facebookに限らず、WWWの性質です。 セッションに認証を設定するサイトには、セッショントークンがURLまたはCookieを介して渡されているかどうかにかかわらず、記述したのと同じ欠陥があります。何らかの形でセキュリティIDを取得することができれば、そのセッションIDを使用しているサイトに自由にアクセスすることができます。

HTTPセキュリティの唯一の実際の形式は、SSLで暗号化された通信です。

+0

私の問題は、ユーザーが私のアプリケーションoffline_accessを許可しているので、たとえユーザーがログアウトしたとしてもgetLoggedInUser()を使用してもセッションキーが無限であるためです。 –

関連する問題