質問するログイン新規登録

回答編集履歴

2

コメントへの回答を追記しました

2019/05/22 06:40

投稿

ockeghem
ockeghem

スコア11710

answer CHANGED
@@ -12,4 +12,16 @@
12
12
 
13
13
  Railsの場合、セッション管理の方式が複数用意されていますが、デフォルトではCookieStoreというものが使われます。これは、セッションの中身を暗号化してクッキー自体に保存する方式です。
14
14
  この場合、クッキーはセッション情報を格納する「容器」としての働きです。セッションを有効化すると、セッションに何も保存していなくても、「空の容器」が作られるわけです。
15
- 「空の容器」があることで、セッション自体は有効であること、その中には何も入っていないことがわかります。
15
+ 「空の容器」があることで、セッション自体は有効であること、その中には何も入っていないことがわかります。
16
+
17
+ ---
18
+ (追記)
19
+
20
+ > 容器には_サイト名_session_Aの値が入っているようにみえます。
21
+ トップページにアクセスするだけでクッキーに保存される
22
+ _サイト名_session_A
23
+ とは一体何なのでしょうか??
24
+
25
+ クッキーは、名前=値 を形式になっています。これが複数でもいいわけです。言い換えれば、複数のクッキーが保存できるからこそ、名前がついてないと区別できないわけですね。
26
+ で、セッションを識別するクッキーにも名前がついています。PHP等ですと、PHPSESSIDという名前がデフォルトですが、変更もできます。今動かしているアプリの場合は、_サイト名_session_A という名前をつけているということです。これは単に「識別のための名前」です。
27
+ 値の方は、L202aFhZS09FK1JGKzEyVE9JMFhFUEV4..............ですが、これは暗号化されています。利用者本人といえども、セッションの内容を書き換えられると、他人になりすましができたりするからです。「空の容器」といっても、0バイトという意味ではなく、容器そのものがあったり、場合によってはタイムスタンプのようなものがあったりしますので、何かしらデータはあり、それを暗号化しているものを見ていることになります。

1

コメントへの回答を追記しました

2019/05/22 06:40

投稿

ockeghem
ockeghem

スコア11710

answer CHANGED
@@ -4,4 +4,12 @@
4
4
  しかし、アプリケーションを書くためには、ページをまたがって情報を覚えておきたいニーズがあります。ログインの状態もその一つですが、他にも、ECサイトのショッピングカートの情報も該当します。
5
5
  そのようなさまざまなニーズに対応するために、クッキーというものが考案され、そのクッキーの応用としてセッションという機能が作られました。
6
6
 
7
- なので、ログイン状態の管理のためだけにセッションがあるわけではありません。ログイン状態の管理はセッションを使う応用の一つに過ぎません。セッションは、他の目的でも使うことができます。
7
+ なので、ログイン状態の管理のためだけにセッションがあるわけではありません。ログイン状態の管理はセッションを使う応用の一つに過ぎません。セッションは、他の目的でも使うことができます。
8
+
9
+ ---
10
+ (追記)
11
+ > このトップページにアクセスしただけでクッキーに保存される_サイト名_session_A= Aとは一体どんな役割があるのでしょうか?
12
+
13
+ Railsの場合、セッション管理の方式が複数用意されていますが、デフォルトではCookieStoreというものが使われます。これは、セッションの中身を暗号化してクッキー自体に保存する方式です。
14
+ この場合、クッキーはセッション情報を格納する「容器」としての働きです。セッションを有効化すると、セッションに何も保存していなくても、「空の容器」が作られるわけです。
15
+ 「空の容器」があることで、セッション自体は有効であること、その中には何も入っていないことがわかります。