0

無料プランと有料プランのWebアプリケーションがあります。

ユーザーはプランを選択してからサインアップします。サインアップした後、彼が支払う前に、私は無料のアカウントでユーザーにログインします。彼が支払い、トランザクションコールバックが成功したら、彼が支払った新しいプランで彼に再度ログインしたいと思います。私がこれを行うことを考えた1つの方法は次のとおりです。

1)ユーザーがサインアップします2)彼は無料のアカウントに登録され、ハッシュされたパスワードはphpセッション変数として保存されます3)彼は支払います4)トランザクションは成功します5)ハッシュされたパスワードセッション変数を検索するphpファイルを呼び出しますそれに基づいてユーザーを更新します

この方法に明らかに問題がありますか?ハッシュされたpwordをセッション変数として使用しても大丈夫ですか?このフローには明らかなセキュリティリスクがありますか?

4

1 に答える 1

1

セキュリティの観点から、私は常に識別子にパスワードを使用しないようにしています。プラス!-ユーザーは同じパスワードを持つことができるため、一意ではない可能性があります(確かに、ハッシュをソルトしている可能性がありますが、ソルトの一意性によっては、この問題が発生する可能性があります...)

あなたのセッションでは、ユーザーの独自の識別子を保存していると仮定しています。これはあなたがそれを調べる方法です。次に、データベース内のユーザー(またはプラン)の役割を変更できます。

その変更をリアルタイムですぐに行う必要がある場合は、次の2つのオプションがあります。

ユーザー認証および承認システムは、ページが読み込まれるたびにデータベースにアクセスして、最新のユーザー情報を取得する可能性があります。この機能が本当に必要になるのは、ユーザーの「寿命」の中で1回だけなので、これはおそらく良い考えではありません。

2番目のオプションは、支払い後のユーザーのセッションで、各ページの読み込み時にデータベースをチェックするように指示する設定を設定することです。データベースを更新し、ユーザーが変更を確認して現在のユーザーに適用すると、そのフラグがオフになる可能性があるため、データベースへのクエリを続行しません。

もちろん、他のオプションもあります。一時ファイルまたはデータベース(データベースを使用してセッション情報を保存している場合)のいずれかでユーザーのセッションを削除し、ユーザーに強制的にログインさせることができます。他にもたくさんあると思いますが、上記の一時的なプロアクティブなアプローチをお勧めします(2番目)。

さらに詳しい説明が必要な場合は、サポートさせていただきます。コメントを投稿!:)

于 2013-02-15T14:26:26.890 に答える