おーみんブログ

C#, ASP.NET Core, Unityが大好きです。

未ログイン時でもcookieの値でユーザ情報を予測する。

はじめに

ログアウト後に「こんにちは 〇〇さん」「〇〇さん、おかえりなさい」というような表記をサイトで見かけることがあります。
前回の記事cookieの勉強をするまではどのように実装しているのかあまり分かっていませんでしたが、今ではその構造が理解できてきました。

時々見かけるユーザ識別について

Udemyで見かけました。
以下はGoogle Chromeにてログアウト後、再度ログイン画面を開いた際の画面です。
個人情報なので伏せていますが、未ログイン状態なのに個人名が表示されていることが分かります。

楽天市場のログイン画面でも上記のような「〇〇さん、おかえりなさい」とは違いますが最初からユーザIDが入力されていました。
これも恐らく似たようなものかなと思っています。

どうやって実装しているのか

あくまで推測なので上記のサイトが以下のような実装をしているとは限りません。
あくまでも推測です。

  1. cookieにブラウザを識別する値(セッションID等)を保存している
  2. ユーザログイン後、1の値と会員情報を紐づけてDBでそのcookie値(もしくはそれを暗号化/ハッシュ化した値)を保管している(Sessionテーブルなど)
  3. ログアウト後も2の情報は削除せず、再度ログイン画面等の対象ページを開いた際にそのcookie値と会員情報を紐づけて画面表示する

ブラウザ単位の識別値である

この値は基本的にブラウザ単位の識別値のため、違うブラウザで開くと結果は変わります。

上記で記載したUdemyや楽天市場のページをMicrosoft Edgeで開くと以下のように個人情報は表示されていませんでした。

【Udemy】

楽天市場

おわりに

ログアウトしたのに(個人のブラウザのみとは言え)個人情報が見えてしまう件については人によって意見が分かれるとは思いますが、あったらあったで「覚えてくれてたんだ!」的な気持ちにもなったりしますね~。