不特定多数の方に開放したホームページ上で販売を行うネットショップ・オンラインショップにおける電子商取引では、ユーザーの入力情報を保護する事が必須であり、更に外部からの攻撃に備え十二分な対策を講じる必要があります。
<< SSL対応は必須
必要な箇所でエラー時のメッセージを出力しない、ウェブサーバやRDBの標準エラーに依存しきっているショッピングカートCGIプログラム。
ん?と思われそうな注意点として、逆にエラーの切り分けなく、いかなるエラーに対しても親切丁寧なエラーメッセージを出力するショッピングカートCGIプログラム。
ショッピングカートに限らないですが、プログラムにはエラー時の処理や入力支援としてエラーメッセージを出力するのが一般的となっています。
当然善意のユーザーへの入力支援としてはエラーメッセージは双方にとって重宝しますから必要です。
しかし、ともするとエラーメッセージは攻撃者に予期せぬヒントを与えてしまう事にもつながります。
こうした場合に善意のユーザーと悪意のユーザーを識別する為には、様々なケースを想定し、何が正常動作で何が例外操作で例外操作の内、善意のユーザーが操作できるはずのない操作はどれかを特定しておく必要があります。
そして善意のユーザーが操作できるはずのない操作が行われた際にエラーメッセージを出力する際には、スクリプトの内部アルゴリズムや作りが想定されないように工夫する必要があります。
これについてはセキュリティの課題も含めセッション管理との一連の流れの中で後述しています。
ここまでは、ショッピングカートCGIにおけるセキュリティ対策を見てきましたが、当然、自前サーバの場合もレンタルサーバに設置する場合もサーバ自体のセキュリティも重要ですので以降で見ていきましょう。
ショッピングカートに必要な品質確保する為の大前提の対策。
セキュリティを考える上でショッピングカートCGIの対策を講じただけでは不足です。
ショッピングカートCGIで利用する複数のファイルと公開するウェブサーバ上のセキュリティ設定とディレクトリ保護、ウェブサーバへのアップロード、ターミナルエミュレータ利用におけるセキュアな接続なども必要です。
また、ログインID、パスワードはセキュアなウェブサーバ、セキュアなFTPソフト、セキュアなターミナルエミュレータにおいても徹底管理が必須です。
ネット上でショッピング機能を利用する場合、「一連の操作をしているユーザー」を特定する為にはcookie/クッキーの設定が不可欠です。
ここまでのセキュリティは最低限必要であり、cookieの実装によりショッピングカートを一応組み込む事はできますが、残念ながら完全にセキュリティが確保されるわけではありません。
また、善意のアクセスの拒否か、またはセキュリティ確保の二者択一を迫られるケースもあります。