16

Django ドキュメントを調べていて、この「https://docs.djangoproject.com/en/1.4/topics/http/sessions/#using-database-backed-sessions」を見つけました。データベースに基づくセッションと Cookie ベースのセッションの違いは何ですか? 一方が他方より優れている点は何ですか? そして、デメリットは何ですか?

4

1 に答える 1

13

Sessionは、Web サイトが複数のページ読み込みにわたって訪問者のアプリケーション状態を保存するために使用されます。

クッキーセッション

  • クライアント/ユーザー側にデータを保存する
  • Web サーバーのクラスターがあるとスムーズに動作します
  • ブラウザは通常、Cookie をドメインあたり約 4 キロバイトの最大サイズに制限しているため、セッション データのサイズが制限されています。
  • Cookie は長い有効期間に設定できます。つまり、セッション Cookie に保存されたデータは、数年ではなくても数か月保存できます (ただし、ユーザーは Cookie を消去できます)。
  • HttpOnly および Secure フラグを設定する必要があります。そうしないと、XSS 経由で簡単に盗まれる可能性があります

データベース セッション

  • データをサーバー側に保存する
  • Web サーバーの 1 つが最初のリクエストを処理します。クラスター内の他の Web サーバーには、ユーザー セッション データを集中的に保存しない限り、情報が保存されません。
  • クライアントは、保存されている情報にアクセスできないため、機密データに適しています。
  • 要求ごとにデータをクライアントからサーバーに移動する必要はありません (サーバーがデータをロードできるように、クライアントは ID を送信するだけで済みます)
  • Cookie ではなくサーバーに保存されるため、より多くのデータを保存できます

Cookie セッションとデータベース セッション

| | 特集 | クッキーセッション | データベース セッション |
|-----------------------------------|------------------ |------------------|
| | データベースなしで動作 | はい | いいえ |
| | ユーザーの機密データを保存できます | いいえ* | はい |

* 機密データ自体ではなく、ユーザーの機密データを参照するポインタをサーバーに格納できます。

Cookie セッションとデータベース セッションはどちらも同じように機能します。唯一の違いは、データが保存される場所です。 Djangoのデフォルトはデータベース セッションですが、Flaskのデフォルトは Cookie セッションです。


詳細:
https://en.wikipedia.org/wiki/Session_(computer_science)
http://php.about.com/od/learnphp/qt/session_cookie.htm
http://wonko.com/post/why- you-probably-shouldnt-use-cookies-to-store-session-data
http://www.tuxradar.com/practicalphp/10/1/0

于 2013-08-14T19:09:09.300 に答える