さまざまなケースで何が最善かについて、誰かが私に良い読み物を教えてくれませんか?
ユーザー数の少ない小規模な Web サイトの場合、セッションはサーバーに保存されるため、セッションに参加できると思います。しかし、ユーザー数が多い場合は、Cookie を使用した方がよいのでしょうか? そして、両者はどのように安全性を評価していますか?
セッション管理は、サーバー側とクライアント側の 2 つの方法論に分けられます。Cookie を使用すると、アプリケーションの物理状態管理部分だけでなく、クライアント側にも信頼が置かれます。すべてのブラウザーが Cookie をサポートしているわけではありません。ユーザーは、自分の裁量に基づいて、Cookie を有効にするか無効にするかを選択できます。多くの開発者は、クライアント システムに完全に依存して Cookie を積極的に受け入れていることを確認することはできないため、これは多くの開発者に固有の障害となります。クライアントは、アクティブな Cookie をいつでも削除できます。Cookie を使用する利点は、Cookie がクライアントによって管理され、クライアント システムに存在し、サイトへの訪問や長期間保持する必要があるその他のデータを追跡するために使用されることです。
一方、セッションはサーバー側のテクノロジーです。それらはサーバーによって積極的に管理されており、その状態はそれぞれサーバーによって存続および消滅します。これらは、クライアント システムに関係なく、開発者がブラウザ間で何らかの状態を維持できるようにするための優れた方法です。Web ファームなどの概念により、セッションは本質的により複雑になる可能性がありますが、適切なタイプのセッション状態管理とストレージを選択することで克服できます。セッションを使用することの欠点は、通常は存続期間が短く、サイトへの一意の訪問を管理するために作成され、長期間持続しないことです。
セッションはほとんどの場合、Cookie を使用してセッションをユーザーに関連付けます (ただし、すべての要求でクエリ文字列またはフォーム データで文字列を渡すことは可能です)。
クッキー:
セッションはそうではありません。
しかし、ユーザー数が多い場合は、Cookie を使用した方がよいのでしょうか?
それだけの量のデータを保存している場合は、非常に小さなハードディスクを使用しているか、Cookie のサイズ制限を超えてしまうかのどちらかです。
どちらも一長一短があるので、状況に応じて使い分けるといいと思います。セッションの最大の短所は、ブラウザーを閉じるとセッションが破棄されることが多いことです。一方、Cookie はそう簡単には破棄されません。Cookie は常にサポートされているわけではありませんが、セッションはほとんど常にサポートされています。
どちらも安全ではありません。そして、私が知る限り、Cookie はわずかにパフォーマンスを向上させます。クライアント側にデータを保存するためのより安全な (安全ではない) 方法は、データベースに保存されたハッシュに対してセッション情報を検証することです。セッション ID をハッシュとともにデータベースに保存します。そして、それを見てください。次の時間。本当に安心したいなら。トークンを使用し、情報が検索されるたびに新しいトークンを生成します。
だから私はそのような決断をしなければならないでしょう。複数のブラウザ セッション用に情報を保存する必要がある場合。クッキーを使用します。ただし、いくつかのページスイッチの情報を保存する必要がある場合は、セッションを使用してください。
編集: Apache サーバーで実行し、RAM と CPU のアクティビティを追跡しました。(重要な結果はありません)また、サーバーが1000個の変数(30文字の長い文字列を含む)をセッションとCookieに設定および設定解除するのにかかった時間を確認しました. すべてのテストを数回行い、平均を取りました。結果。これが結果です。
COOKIES
Set: 0.001863 seconds.
Unset: 0.004932 seconds.
SESSIONS:
Set: 0.000494 seconds. (very consistent results)
Unset: 0.000502 seconds. (Again very consistent)
そのため、セッションはかなり高速になり、一貫性が増します。セッションを使用できる場合。私は間違いなくセッションに行きます。