目次一覧
状態:-
閲覧数:2,866
投稿日:2014-07-17
更新日:2019-09-04
Cookie / Cookieとは? / Cookie仕様
発行別クッキーの種類は2種類 / 期限別クッキーの種類は2種類 / クッキーをいつ破棄するの?
Cookieの構造 / パソコンに保存されているCookieを確認
$_COOKIE / 確認具体例 / Link
アクセス解析におけるクッキーの役割
発行別クッキーの種類は2種類 / 期限別クッキーの種類は2種類 / クッキーをいつ破棄するの?
Cookieの構造 / パソコンに保存されているCookieを確認
$_COOKIE / 確認具体例 / Link
アクセス解析におけるクッキーの役割
Cookie / Cookieとは? / Cookie仕様
Cookie
片仮名表記
クッキー
Cookieとは?
Webブラウザにてサイトを閲覧した際に作成される、データを一時的に保管しておく仕組み
・元々ユーザエージェント(Webブラウザ)によって保存される「小さな」ファイルのことを意味する
・WebサイトとWebブラウザの間でやりとりする小さなデータ
データ
・クライアント(ユーザ/ブラウザ)側で保持
※Cookieはブラウザごとに保存される
主な利用用途
・状態管理
・サイト毎に固有の情報を、サイト訪問者のパソコンにテキストデータとして保存している
・具体的には、訪問者がページを閲覧した回数や、オンラインショップで購入した履歴など
・クッキーは、専用のHTTPヘッダ、あるいはJavaScriptにより利用することが可能
クッキーが必要な理由
・Web サービスのプロトコルである http には、 訪問者を特定する仕組みが存在しない
・そのため、訪問者特定のために cookie を使用することが多い
Cookie仕様
1.4096バイト
・記録できるのは4096バイトまで
・(クライアントPCの)Cookieが、データを記録できるのは4096バイトまで
2.300個
・クッキー総数
・最大300まで保存することが可能
3.20個
・Cookieの数は、20個に制限
・1台のサーバが同じコンピュータに対して発行できるCookieの数は、20個に制限されている
・20個を越えると、古いものから消去される
4.有効期限
・Cookieにはそれぞれ有効期限を設定することができる
・有効期限を過ぎたCookieは消滅する
5.記述箇所
・<html>タグの前に関数を記述
・cookie は HTTP ヘッダを利用しているので、<html>タグ(ブラウザへの出力)の前に関数を書いておかなければいけない
6.ユーザー環境
・ユーザー環境によっては利用できない
・ブラウザやファイアウォールの設定で cookie を無効にできる
7.cookieデータ取扱
・cookie 内容はユーザーのパソコンに保存
・パスワード等を cookie に保存してしまうと、 パソコンを他人と共用している場合などに、パスワードが洩れる可能性がある
発行別クッキーの種類は2種類 / 期限別クッキーの種類は2種類 / クッキーをいつ破棄するの?
発行別クッキーの種類は2種類
ファーストパーテイーCookie
・アクセスしているページのドメインから発行されているもの
・サイトドメイン毎にしかCookieを付与できないため、サイト(ドメイン)を横断してのCookie付与は不可
サードパーティーCookie
・アクセスしているページのドメインから発行されていないもの
・訪問しているサイト以外のドメインから発行されているCookieのこと
期限別クッキーの種類は2種類
セッションクッキー
・ブラウザを閉じると破棄される
パーシステントクッキー
・ブラウザを閉じても決まった期間保持される
クッキーをいつ破棄するの?
クッキー破棄するタイミングはサーバー側で指定
・通常のブラウザは従うが、技術的には無視することも可能
クッキー破棄するタイミングを、サーバー側で変更することも可能
・まだ寿命の残っているクッキーを破棄するよう指示することもできる
・これらとは別に、ブラウザ側は任意のタイミングでクッキーを自分で消せる
・また、クッキーを捏造してサーバーに送信する事も技術的には可能
・サーバー側に格納したあらゆる記録はサーバー側の自由
・永遠に保持することもできるし、任意のタイミングで消すこともできる
Cookieの構造 / パソコンに保存されているCookieを確認
Cookieの構造
・Set-Cookie: name=value; expires=Sat, 20 Nov 2010 03:10:21 GMT; domain=www.example.jp; path=/member/; secure; HttpOnly
※name=value(Cookieに含めるデータ。複数指定可)
※expires=(有効期限。max-ageの場合もある)
※domain=(Cookie返送先ドメイン)
※path=(Cookie返送先のWebサイト内のパスのプレフィックス)
※secure(secure属性)
※HttpOnly(HttpOnly属性)
クライアント(自分のパソコン)へ保存されているCookieを確認してみる
Cookieはブラウザごとに保存される
Google Chrome を使用している場合
方法A
1.Google Chrome に保存されているCookie一覧を表示
・下記URL入力
chrome://settings/content/cookies
2.すべての Cookie とサイトデータ をクリックする
3.右上にドメインを入力して検索
方法B
1.下記URL入力
chrome://settings/siteData
2.右上にドメインを入力して検索
クリックすると、下記のような内容が表示される
PHPSESSID
名前
PHPSESSID
コンテンツ
xxxx
ドメイン
xxxx
名前
PHPSESSID
コンテンツ
xxxx
ドメイン
xxxx
$_COOKIE / 確認具体例 / Link
$_COOKIE
Cookie
サーバへアクセスするたびに、クライアント(ブラウザ)から自動送信される
クライアント(ブラウザ)
・Cookieを受け取る
・Cookieを受け取ったサーバとは異なるWebサーバへ対してはCookieを送信しない(意図しない情報が他のWebサーバーへ送信されるのを防ぐため)
サーバー側PHPにおける$_COOKIE
・ブラウザに保存されているクッキー(Cookie)は$_COOKIEへ自動的に格納される
・クライアントからサーバーへ送られた全てのクッキーは 自動的に $_COOKIE という(常にグローバルな)配列に格納される
※明示的にsetcookie関数を実行しなくても、$_COOKIE配列へは値が格納される
確認具体例
Cookieは通常ドメイン単位で管理されている
特別な設定でも行わない限り、異なるドメインのクッキーを取得できない
「http://example.com/」へ設置したPHPで$_COOKIEに格納されている'PHPSESSID' の値を確認
echo "<pre>";
var_dump($_COOKIE);
echo "</pre>";
var_dump($_COOKIE);
echo "</pre>";
array(2) {
'__stripe_mid' =>
string(36) "xxxx"
'PHPSESSID' =>
string(26) "n7r1141cacttfioiice3s7rv0i"
}
Google Chrome で Cookie 確認
・example.comでドメイン検索した結果
'PHPSESSID' の値は、"n7r1141cacttfioiice3s7rv0i"
・example.netでドメイン検索した結果
'PHPSESSID' の値は、"o6dcrkn2r7ddgh2fe16nump6lj"
Link
curl で Cookie を使用する
アクセス解析におけるクッキーの役割
・ユーザー識別IDをCookieに登録する
javascript を埋め込むビーコン型のアクセス解析ツール
・主に Cookie を発行してセッションを判断していたりする
サーバーとクライアント間をCookieで次のように管理
1.DMPタグ(Webビーコン)が設置されたWebサイトにユーザーが訪問
2.Webサイトはユーザーに対して1st Party Cookie(ID:AAA)を発行
3.DMPタグが発火
4.Webサイト(に設置されたDMPタグ)から画像がリクエストされ、DMPのサーバーへリダイレクト
5.DMPサーバーはリクエストを受けて、Webサイトがユーザーに発行したCookie情報(ID:AAA)を取得しつつ、ユーザーにDMPのCookie(ID:BBB)を発行+ダミー画像を返す
6.DMPサーバーには、自身のCookieIDとWebサイトのCookieID情報がマッピングされる(※イメージ ID:AAA=ID:BBB)
Webpage Screenshotがポリシー違反