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