不特定多数の方に開放したホームページ上で販売を行うネットショップ・オンラインショップにおける電子商取引では、ユーザーの入力情報を保護する事が必須であり、更に外部からの攻撃に備え十二分な対策を講じる必要があります。
また、CGIで入力データの受け渡しには「GET」と「POST」がありますが、ショッピングカートCGIプログラムでURLの一部として入力値が現れてしまう「GET」を利用しているものは要注意です。
「GET」を利用しているものも情報保護が重要なショッピングカートCGIスクリプトとしては論外です。
そもそも「GET」は入力文字数制限がありますから、こうしたカートで、利用が想定されるのはユーザーIDやパスワード、cookie、セッションIDといった比較的短い情報である一方、かなり重要な情報であり、こうした情報は最終的にユーザー入力情報に結びつくので「GET」を利用するのは得策ではありません。
「GET」の引数がURLの一部っていっても「%と数字がいっぱい入った暗号化されたものじゃん」と思われる人もいるかもしれませんが、これは暗号化ではなく、誰でも簡単に復号(デコード)する事ができるもので、基本的にブラウザが自動的に符号化(エンコード)して送られてきたデータ(もちろん自分でエンコードする事もできる)を、エンコードと反対の処理を行う事で誰でも元の形に復号できるように規定されている「文字化け対策の一つ」ですから暗号の性質は持ち合わせていません。
その為、ショッピングカートとしては「GET」を利用できないようにし、「POST」でデータを受け渡す方が「GET」と比べれば、より安全です。
>> CGIのハイパーリンク・URL直接入力での呼び出しを禁止する
ショッピングカートに必要な品質確保する為の大前提の対策。
セキュリティを考える上でショッピングカートCGIの対策を講じただけでは不足です。
ショッピングカートCGIで利用する複数のファイルと公開するウェブサーバ上のセキュリティ設定とディレクトリ保護、ウェブサーバへのアップロード、ターミナルエミュレータ利用におけるセキュアな接続なども必要です。
また、ログインID、パスワードはセキュアなウェブサーバ、セキュアなFTPソフト、セキュアなターミナルエミュレータにおいても徹底管理が必須です。
ネット上でショッピング機能を利用する場合、「一連の操作をしているユーザー」を特定する為にはcookie/クッキーの設定が不可欠です。
ここまでのセキュリティは最低限必要であり、cookieの実装によりショッピングカートを一応組み込む事はできますが、残念ながら完全にセキュリティが確保されるわけではありません。
また、善意のアクセスの拒否か、またはセキュリティ確保の二者択一を迫られるケースもあります。