2011-07-21 19 views
5

私はfacebook javascript sdkを使用して、Webサイトのユーザーログイン機能を提供しています。Facebook Javascript SDKセキュリティ

私がしたいのは、ログインしたユーザーのユニークなfacebook idを取得し、idを使ってmysqlデータベースとの間でデータをフェッチ/フェッチすることです。

しかし、私は本当にこれが非常に安全だとは思わない。私はクレジットカードの詳細などのような敏感なものは保管していませんが、実際に可能な限り安全であることが明らかです。

私の恐れは、javascriptが何であるかによって、誰かがFacebookのIDを偽って、必要なものを取り出してしまうということです。

私はphp sdkがこの問題の解決策を提供していることを知っていますが、JavaScriptの方が好きです。なぜなら、主に使いやすいからです。怠け者)。

だから、私の質問は以下のとおりです。

  1. このセットアップは、私はそれがあるかもしれないと感じほど安全ではないでしょうか?

  2. このようなシステムのセキュリティを改善するために、php sdkに切り替える以外に何かできることはありますか?

ありがとう!

+0

Facebookのデータやサイトに関するデータを保存しますか?あなたはSSLでこれをやっていますか? – zachzurn

+0

私は、リモートで検証に関連するものについてはjavascriptを使用することをお勧めします。つまり、javascriptはクライアント側を実行するので、悪意のあるユーザーはすべての入力を操作することができ、実行中のjavascriptベースの検証。 – uscere90

+0

私は保存する唯一のことは、ユーザーのuidで、データを追加/取得する正しい表を識別するために使用され、年齢です。 SSLを使用していません。 – Joshua

答えて

4

FacebookのIDはかなり難しいです(ほとんどのユーザーは自分でしか知りません)。

データベースから情報を取得しようとしていると心配している場合は、データベースに格納されている情報を追加します(ユーザーが自分自身で取得できないものはありません)。アクセストークン、または各行への署名付きリクエスト、およびFacebookのIDを使用してデータを取得します。セキュリティが大幅に向上します。

EDIT

ユーザーからの署名要求を取得するいくつかの機会があります。リクエストは使用がが許可を受け入れ、そしてあるた場合にのみ、ユーザIDが含まれています署名

* A signed_request is passed to Apps on Facebook.com when they are loaded into the Facebook environment 
* A signed_request is passed to any app that has registered an Deauthorized Callback in the Developer App whenever a given user removes the app using the App Dashboard 
* A signed_request is passed to apps that use the Registration Plugin whenever a user successfully registers with their app 

は、ユーザーがアプリケーションに入り、許可を受け入れると(署名された要求にIDが含まれないことを意味する)、再度渡されません。この節約のためにアクセストークンが良いアイデアかもしれません。 signed request

また、署名されたリクエストはurl(param = "signed_request")にあります。私は常にC#で解析しますが、少なくともJavaScriptを使用して1つを取得できると確信しています

+0

ちょっと読んだら、理想的には、Facebookの暗号化された文字列にユーザのuidが含まれていて、fbアプリの秘密鍵を使って読むことができます。 署名されたリクエストは完全にこの説明に適合すると思われますが、リクエストに応じてこれらのいずれかを呼び出す方法はわかりません。理想的にはjavascript APIを使用します。これが可能かどうか誰かが分かっているなら、私は知りたいと思う。 fbアクセストークンは、私が要求に応じて見つけることができるものですが、uidは暗号化されておらず、真ん中の文字列です。 – Joshua

+0

編集 –

+0

を見てくださいfaceboook IDがユーザーにしか知られていないという最初のステートメントは間違っています。あなたはIDを検索するために使用することができるネット上のサイトがたくさんあるので、それらは安全ではありません。署名付きリクエストを使用する必要があります。 – eagle779

1

カールを使用して原点をスプーフィングするのはかなり簡単です。私はFacebookがこれを可能にするもう一つのマカニズムを持っていると思う。コードを調べると、iframeを生成してリクエストを通過させるように見えます。私が推測しなければならないのは、Facebookドメインからのリクエストのみを設定し、iframeをホワイトリストに載っているドメインのページに埋め込むことができるようにすることです。