0

現在、ユーザーがログインすると、ユーザー名とユーザーIDがCookieに保存されます。これは最も安全な方法ではないため、方法を変更する予定です。

ユーザーがログインすると、一意のトークンが Cookie に保存されます。ユーザー名、ユーザー ID、禁止されたブール値、および一意のトークンがセッションに保存されます。Cookie 内のトークンは、ログインするセッション内のトークンと一致する必要があります。

トークンをデータベースに保存することを考えましたか? 私のコードでは多くの場合、すぐにユーザー名とユーザー ID が必要になるため、常にデータベースにクエリを実行するのではなく、セッションに保存することが最も論理的なアイデアです。

とにかく、私の方法は適切ですか?; そうでない場合、実績のある方法は何ですか?

4

1 に答える 1

0

あなたの方法は適切に聞こえます。セッション オブジェクトをどこに保存する予定なのかはわかりませんが、データベースのセッション テーブルに保存しても問題ないと思います。これには、すべてのページをレンダリングする前にデータベースからセッションを取得するためのデータベース クエリが必要であることは事実です (たとえば、セッション トークンが正しくない場合は、おそらくログイン ページにリダイレクトする必要があります) が、私の経験ではパフォーマンスの問題ではありません。 . おまけとして、セッション テーブルを作成したら、それに対して興味深いクエリを実行して、Web アプリの使用状況を追跡できます。

私のPHP プログラミングのコピーには、「PHP で状態を維持する最善の方法は、組み込みのセッション追跡システムを使用することです」と書かれています。自分で書く前に、それを考慮する必要があります。

どのようなアプローチを取るにしても、おそらくセッション トークンがランダムに生成され、妥当な時間の後に有効期限が切れることを確認する必要があります。そうしないと、攻撃者がセッション トークンを推測して偽造したり、他人のセッション トークンを盗んでセッションをハイジャックしたりする可能性があります。

于 2012-07-18T19:06:07.250 に答える