2016-12-21 1 views
0

私はPHP Webアプリケーションを持っています。私はFacebookログインを実装しようとしています。私はこのようなプロセスを設計しました:どのようにユーザーが本当にFacebookのログインをしたことを確認するには?

  1. ユーザーはFBログインボタンをクリックします。
  2. ログイン処理(AJAX)を開始するためのリクエストがFacebookに送信されます。
  3. コード内のJavascriptコールバック関数が呼び出され、ユーザーにログインが完了したことが通知されます。
  4. 私のjsコードは、ユーザーの詳細(名前とメールのようなもの)を取得するFacebook APIを呼び出します。
  5. My JSコードは取得したデータをサーバーコード(PHP)に送信します。セッションコードにユーザーの電子メールを保存すると、ユーザーは認証されたままになります。

私が恐れているのは、誰かがステップ5でリクエストを偽装してPHPアプリケーションにユーザの電子メールと名前を送信することが容易であるということです。

私の質問は:どのようにPHPのサーバーコードは、フェイスブックのログインが行われ、送信された電子メールはログインに使用されることを確認できますか?

+0

ステップ2:私はそこに方法があるとは思わないが、Facebookはちょうどあなたにフォームを与えたり、ログインページに強制的にリダイレクトしたりして、ボタンを続けるか、ボタンを続行しますか?まだログイン資格情報を送信し、成功すれば返すメソッドを見たことがありません – Beginner

+1

トークンを使用するステップ2の後、 'https://graph.facebook.com/me?access_token= [token]'を呼び出すことができます。返されるオブジェクトには、FBクライアント側から受け取ったものと照合するための 'email'が含まれています。効果的には、セキュリティ対策としてトークンサーバー側を検証しています。 – G0dsquad

+2

クライアント側のデータを要求せず、サーバーに送信しないでください。アクセストークン_only_をサーバーに送信し、そこからAPIリクエストを作成します。 // https://developers.facebook.com/docs/facebook-login/security – CBroe

答えて

0

セッション変数はPHPサーバに保存されます。ユーザデバイスではセッションIDを含むクッキーが1つだけ保存されるため、PHPサーバはユーザがどのセッションに属しているかを認識します。 セッションIDはランダムに生成され、それをブルートフォースするのは難しいので、セッションIDを偽装するのは簡単ではありません。

注:何かが(私が書いたもの)が間違っている場合は、コメントで私を修正してください

出典http://www.w3schools.com/php/php_sessions.asp

EDIT: PHPサーバーがデータ彼を取得する必要があります(ユーザが実際にそれをした場合)

関連する問題