0

現在、Javascript Facebook ログイン API を実装しています。

Facebook からのコールバック レスポンスに基づいて、このクライアント サイド スクリプトはクエリ文字列パラメータを含むリクエストをサイトの URL に送信します。その URL の電子メールに基づいて、クライアントが認証されます。

これは安全ではありません。私たちが確認できる他のトークンは Facebook から返されません (私が知る限り)。クエリ文字列パラメーターの電子メールに基づいてユーザーをログインさせることが期待されており、パスワードはありません。

クエリ文字列データが Facebook からの応答に続く JavaScript リダイレクトからのものであることを保証する別のクエリ文字列パラメーターを追加したいと思います。

これは、サーバー側と比較できるクライアントスクリプトによって作成されたある種のハッシュ値であるべきだと考えています。ただし、この秘密鍵を作成するために使用されるすべてのリソースは、クライアント Cookie を介して、またはクライアント スクリプトを検査することにより、攻撃者に利用可能になります。

私が使用できる、この問題に対する一般的で安全なアプローチはありますか?

4

3 に答える 3

1

Facebook は明らかにOAuthを使用しています。詳細 (関連する OAuth および FB ドキュメントで見つけることができます) をあまり詳しく説明しなくても、OAuth はサーバーとサービス プロバイダー (この場合は Facebook) の間で共有されるシークレットを使用して動作し、フロントエンドの Javascript には公開されません。受け取ったコールバックが本物かどうかを確認するために使用されます。

于 2012-06-19T12:47:01.543 に答える
0

ユーザーを認証するたびに、一意のコールバック URL を Facebook に渡します。

この URL には、セキュリティ トークンが含まれている必要があります。セキュリティ トークンが存在する場合は、ログオン試行の信頼性を識別します。

于 2012-06-19T12:43:37.920 に答える
0

stateFacebook へのリクエストに変数を追加できます。これは、リクエストを検証するために Facebook から返されます。

https://developers.facebook.com/docs/reference/dialogs/oauth/

于 2012-06-19T12:46:19.870 に答える