不特定多数の方に開放したホームページ上で販売を行うネットショップ・オンラインショップにおける電子商取引では、ユーザーの入力情報を保護する事が必須であり、更に外部からの攻撃に備え十二分な対策を講じる必要があります。
プロクシ(プロキシ・proxy)経由でアクセスされた(企業や団体などの複数台ある端末などで外部アクセスごとにIPを自動的に割り振る為IPが毎回変わる、IPを統一している場合に同じIPとなるなどの)場合には、その先のユーザーの特定はできませんし、携帯電話からのアクセス(少なくともDocomo)はproxy経由なので同じユーザーであってもアクセスするたびにIPが毎回変わりますし、ダイヤルアップでもアクセスごとに毎回IPは変わります(瞬間的に変わらない場合があってもそれは偶然であり同一を保証されるものではありません)。
要求をだしたプロキシサーバのIPアドレスである[HTTP_X_FORWARDED_FOR]やプロキシサーバ情報[HTTP_FORWARDED]を取得できれば、そこまでは確認できますが、その先のユーザまでは特定できません。
例えば仮に同一のIPを振るプロキシサーバに1万台のPC(1万人)が接続している場合には、これらプロクシベースで判定した場合、こんな事はあり得ないでしょうが、その1万人が同じ時間帯に同時にショッピングカートにアクセスしている場合、1万人が同じ人という事になってしまいます。
この為、[REMOTE_HOST][REMOTE_ADDR][HTTP_FORWARDED][HTTP_X_FORWARDED_FOR]を絶対条件とした「特定のユーザー」を判定する事はできませんから唯一頼りになりそうなのはcookieだけということになります。
もちろん、同じプロクシ内からの発信が全て同じIPになる場合には、同じ日の同じ時間帯というタイミングで同一のプロキシサーバからの訪問者がいなければ、ショッピングカートとして求める特定のユーザーとして成立しますが、万一、他にも同一のプロキシサーバからの訪問者が複数いる場合には判定できないということです。
そんなにサイト自体アクセスが多くないし、そんな偶然はまずあり得ないよ。。という場合でも、毎回変化するIPの場合には、これらの環境変数では善意のユーザーでもIPによる特定は不可能ということです。
もっともプロクシ経由という事は、どこかの企業や団体の端末からのアクセスであって、このご時世は特に、仕事中はもちろん、勤務時間終了後や休日であったとしてもショッピングをするというのは考えにくいので、この問題はそもそも論外ですけど。
しかし、一方でIPが毎回変わる場合については、PCだけで見てもモバイルノートPCと携帯端末によるネット接続の場合、それから携帯電話、ダイヤルアップの場合などにも影響しますから、これらに対処できないのは販売機会の損失でしょう。
無線接続については携帯端末IDやネットワークカードが識別できれば別ですが、無線という通信上の盗聴や割り込みの可能性も別の課題として残ります。
更に、[REMOTE_ADDR]以外の環境変数は、改ざんされる可能性が皆無ではありません。
[REMOTE_ADDR]が、まず改ざんされる可能性がないと考えられる理由は、後述します。
ショッピングカートに必要な品質確保する為の大前提の対策。
セキュリティを考える上でショッピングカートCGIの対策を講じただけでは不足です。
ショッピングカートCGIで利用する複数のファイルと公開するウェブサーバ上のセキュリティ設定とディレクトリ保護、ウェブサーバへのアップロード、ターミナルエミュレータ利用におけるセキュアな接続なども必要です。
また、ログインID、パスワードはセキュアなウェブサーバ、セキュアなFTPソフト、セキュアなターミナルエミュレータにおいても徹底管理が必須です。
ネット上でショッピング機能を利用する場合、「一連の操作をしているユーザー」を特定する為にはcookie/クッキーの設定が不可欠です。
ここまでのセキュリティは最低限必要であり、cookieの実装によりショッピングカートを一応組み込む事はできますが、残念ながら完全にセキュリティが確保されるわけではありません。
また、善意のアクセスの拒否か、またはセキュリティ確保の二者択一を迫られるケースもあります。