http://www.kajisoku.net/1/archives/eid251.html
より。
原因はセッション周りということで、いつも気を遣うし、一番念入りにテストするところなのでガクブルしながら見てます。
ページ遷移を含む物販サイトだと、たいてい合言葉(=セッションID)をサーバとブラウザで決めておき、合言葉を言えばサーバ側で控えた購入商品の情報を呼び出して、ページを移動してもを引き継げるようになっています。
今回の問題は、
1.購入完了処理後にサーバ側で「もうこの合言葉はつかわん」と破棄したあとでも、ブラウザが合言葉を使って接続すると、鼻歌交じりで合言葉が必要な全部のページが見られる。
2.購入履歴見るための注文番号が単純で、自分の購入履歴画面に入ったブラウザのURLを適当に変更すると「他人の購入履歴が見られる」
3.しかも他人の購入履歴から領収書が(不正に)発行できる
4.Googleのキャッシュに購入履歴等の個人情報が記載されたページが保存されてた(=誰でも検索できるようになってた)
通常セッション(合言葉)の破棄は
1.サーバセッションデータ削除
2.ブラウザクッキー(セッションID)削除
としてやればOKなんですが
秘匿ページ側では
1.有効なセッションかどうか確認して表示
→サーバ側セッションデータは有効か?
→IPアドレスも同一か確認したほうがより○
→(ID/PWが必要なページの場合)インアウトのログをとっておき、インならば表示、アウト済みまたは記録なしなら非表示とする
というのもセットで行います。
たぶん、ブラウザクッキーの削除をしないで、クッキーにセッションIDがあるかどうかだけ「有効セッション」と判断していたような気がします・・・。(そしてクッキーの有効期限)
セブンはシステム開発の内製化をすすめて、社内に20?30人程エンジニア入れてやってた様です。
経費削りすぎたのか、私のような初心者が紛れ込んでたのかもしれないですねぇ・・・。
ひとごとじゃない・・・。