7

インプロセスセッション状態を使用することは、Webアプリケーションのスケーリングに関しては悪です(クラスターではうまく機能せず、サーバーがリサイクルされると爆破されます)。

少量の情報をセッション状態に保持する必要があると仮定すると、特定の状態サーバー/データベースではなく、この目的で暗号化されたCookieアイテムを使用することの欠点は何ですか?

明らかに、Cookieを使用すると、ネットワークオーバーヘッドがわずかに発生します。明らかに、クライアントのブラウザ/モバイルデバイスでCookieが有効になっていることを前提として操作します。

アプローチで他にどのような落とし穴を見ることができますか?

これは、シンプルでスケーラブルで堅牢なセッションに適したオプションですか?

4

3 に答える 3

7

これは、シンプルでスケーラブルで堅牢なセッションの優れたアプローチです。もちろん、暗号の品質は重要であり、それを正しく行うのは難しいことがよくありますが、それは可能です.

私は他のポスターのいくつかに同意しません:

暗号化された Cookie 値に対して実行できるリプレイ攻撃は、Cookie として保存されているセッション キーに対して実行できます。これが重要な場合は、https を使用してください。

Cookie が消去されると、状態サーバーまたはデータベースに保存されているセッション データも失われます。セッション キーが失われると、セッションを取得できなくなります。

于 2008-12-29T23:17:21.413 に答える
2

もう1つの落とし穴は、サイトで盗まれて再生される可能性があることです。

ところで:Cookieにいくつかのものを保存する代わりに、Cookieにキーを保存し、memcachedのようなものを使用することも検討する必要があります(memcachedはサーバーファーム全体で機能します)。

于 2008-12-29T23:02:11.523 に答える
2

通常、セッションIDにはCookieが使用されます。情報の量が少ない限り、情報をCookieに保存することをお勧めしますが、価値のあるもの(CC番号、SSNなど)は保存しないでください。 、など)は、暗号化されている場合でも、実際にはCookieに保存する必要があります。

私は専門家ではありませんが、私の経験では、次のことが当てはまることがわかりました(少なくとも、PHPとASP.Netを使用しています)。

クッキー

  • [pro]リクエストごとに送信されるため、拡張性に優れています
  • [プロ]SSL接続を介してのみ送信するためにCookieを要求できます
  • [プロ]クロスサーバーテクノロジー、クロスサーバーマシンを使用できます
  • [con]データはすべての要求と応答で送信されます
  • [con]ブラウザで有効にする必要があります

ステートサーバー/DB

  • [プロ]サーバーにのみ保存されるデータ
  • [プロ]ユーザーがCookieをクリアしてもデータは保持されます
  • [プロ]クロスサーバーテクノロジーを使用できます
  • [con]は、要求/応答時にIDを渡す必要があります(したがって、CookieまたはすべてのURLへの追加が必要です)
  • [con]はデフォルトモードでは適切に拡張できませんが、マシン全体を具体的かつ排他的に状態に専念できる場合、これはそれほど問題にはなりません。スケーラビリティのために従うことができる他の多くのスケーリング技術があります。
  • [con]ユーザーをデータに結び付けておくために、URLまたはCookieまたはその他の手段を介して渡されるセッションID変数が必要です。
于 2008-12-29T23:02:18.153 に答える