1

Gearmanジョブサーバーを自分のWebサイトのアーキテクチャに組み込むことを計画しています。特にギアマンを使用して達成することを計画している1つのタスクは、私のWebサイトでのFacebook認証です。

現在、ユーザーがFacebook JS SDKを介してFacebookアプリを承認することでサイトにログインできるようにしています。認証が成功した後、AJAX呼び出しを介してユーザーのaccess_tokenをサーバーに送信し、サーバーがaccess_tokenを取得すると、facebookGraphAPIを照会します。現在のユーザーの情報を取得し、それに応じてユーザーのセッションを設定します。FacebookAPI呼び出しをワーカースレッドにプッシュしたいと思います。

ジョブをgearmanに送信し、gearmanに遅延ジョブIDを返してもらい、そのIDをクライアントのブラウザーに送り返し、ブラウザーに設定された間隔(prob 0.5または1.0秒)でサーバーをポーリングさせて、API呼び出しが完了したかどうかを確認します。ジョブIDをサーバーに返し、ジョブの完了ステータスを確認することによって。

私の質問は、内部のジョブIDをクライアントと共有することにセキュリティ上のリスクはありますか?

4

1 に答える 1

1

共有はおそらく問題ではありませんが、ユーザーがjobDdをサーバーに送信してステータスを確認しているため、ユーザーがjobIdを変更して他の認証試行の状態を取得することを妨げるものは何もありません。これは問題ではないかもしれませんが(おそらく他に何も返さないため)、競合他社にアプリの人気に関する少なくとも少しの情報を漏らしてしまうでしょう。

ランダムキーサーバー側を生成し、ジョブIDをそのキーに関連付けてから、ランダムキーを使用してブラウザーとサーバー間で通信し、現在の状態を要求することをお勧めします。

クライアントはランダムキーを取得し、それを使用して現在のタスクの状態を要求します。一方、クライアントとGearmanの間で動作するサーバーは、データベースでキーを検索し、実際のjobIdを取得して、Gearmanにクエリを実行します。

于 2011-10-04T11:28:40.270 に答える