0

したがって、セッションの管理中にセキュリティから学んだことは、生成されたセッション ID をクライアント Cookie に保存し、残りのデータをサーバーに保存することがベスト プラクティスであるということです。では、$_SESSION で正確に何が起こっているのでしょうか? 公式の PHP ドキュメントでは、何も言っていない小さな説明しか見つかりませんでした。

サーバー上のデータベースにセッション テーブルを作成する必要がありますか、それとも $_SESSION で一時テーブルを作成し、必要なすべてのデータをそこに保存する必要がありますか? 問題は、約で信頼性の高い優れたシステムを構築する必要があることです。1000 人のユーザーが同時にサーバーにログインしているため、$_SESSION にすべての作業を「任せる」ことがどれほど良いかわかりません。

$_SESSION はどのように ID を生成するのでしょうか? IPとブラウザの組み合わせで1つのIDですか?つまり、Cookie を使用する許可を必要とする必要はありませんが、代わりに (サーバー) が IP とブラウザーの ID を保存し、これはクライアントがセッションなどのデータをまったく持っていないことを意味します。これはあくまで私の考えですが、どのようにすればよいのか、どのような方法が適切なのかわからないので、助けていただけませんか?

4

2 に答える 2

1

$_SESSIONはセッションごとにランダム ID を生成します。ID は IP またはユーザー エージェントなどの他のクライアント情報にリンクされません。

  • PHP はユーザーの Cookie を生成します。これにはセッション ID が含まれます。

  • 配列はシリアル化され、サーバー上の$_SESSIONファイルに保存されます。

  • ユーザーが PHP セッション Cookie に接続すると、ID がチェックされ、$_SESSION 配列がファイルから逆シリアル化されます。

セキュリティの観点から、PHP は IP またはユーザー エージェントに基づいてユーザーを検証しないことに注意することが重要です。そのため、ユーザーは別のユーザーの Cookie とセッション データを盗むことができます。この機能が必要な場合は、何かを簡単に実装して、セッション配列にハッシュ値を保存し、セッションが復元されたときにそれを確認できます。

独自のセッション実装を作成することもできます。必要なのは、一意の ID を持つ Cookie を作成することだけです。その後、前述のように、データをデータベースに保存します。私は個人的に自分のUserSessionクラスを作成することを好みます。これにより、完全に制御できます。

于 2013-10-17T15:55:37.750 に答える