1

Firebase SDK を使用してクライアント側でユーザーをアプリに認証しています。その後、クライアント側のセッションが開始されます。次に、ユーザーが PHP エンドポイントにデータを投稿できるようにします。PHP スクリプトで、リクエストが認証されたユーザーからのものかどうかを確認し、残りのデータを検証する必要があります。すべて問題なければ、操作を終了します。

私はこのようにすることを考えました:

  • ユーザーはクライアント側で認証されます
  • Auth イベントでは、ユーザー ID を含む JWT トークンのリクエストがクライアント側で ajax 経由で専用の PHP スクリプトに発行されます。トークンが生成されると、セッション Cookie に保存されます。
  • フォーム送信は JWT トークンを運び、エンドポイントはトークンをデコードし、そこに格納されている uid が Firebase DB に登録されている有効なユーザー ID であるかどうかを確認します。

セキュリティの観点から見て、良いアイデアですか、それともひどいアイデアですか?

4

1 に答える 1

1

最初の経験則として、Firebase で生成された JWT を検証するには、Firebase のシークレットが必要です。経験則の 2 つ目は、Firebase シークレットをクライアントに送信したり、クライアントに保存したりしてはならないということです。

そのため、PHP を介して JWT を検証するには、それをデコードし、Firebase シークレットによって署名されていることを検証するライブラリを使用する必要があります。それを確認したら、JWT の uid を調べて、リソースを所有するユーザーの uid と一致するかどうかを確認します。

于 2015-10-10T00:05:42.937 に答える