カートのセキュリティ対策
SSL対応ショッピングカートCGIとSSLの必要性
SSL対応ショッピングカートCGIの比較検討
ショッピングカートCGI
ダウンロードの申込み
ショッピングカートCGIのセキュリティ対策 ショッピングカートCGIのセキュリティ対策

ショッピングカートのセキュリティ対策

ショッピングカートのセキュリティ対策について考えてみましょう。

※当社は「JPCERT/CC製品開発者リスト」登録ベンダです。

SSLとは?ショッピングカートのセキュリティ対策
脆弱性のないショッピングカートを提供し、安心してお店の運営が行なえるようにしたいと考えています。それで、当社のショッピングカート(SPシリーズ)のセキュリティ対策についてお知らせしたいと思います。

セキュリティ対策として一般的に取り上げられている中で、ショッピングカートに関係しているのは主に次の2つです。
  • XSS(クロスサイトスクリプティング)
  • リファラースパム
これらに対する対策が必要です。

また、データが何らかの事故等で流出した場合を想定して、パスワードが暗号化(ハッシュ化)してあれば一層安心できます。

これらの対策について、PC携帯管理の3つについてそれぞれ考えて見ましょう。

【注】XSSなどの用語に関しましてはこのページの最後に掲載したサイトを参考にしてください。

ショッピングカートとSSLの必要性PCショッピングカートのセキュリティ対策
XSS脆弱性は、特殊文字「<」「>」「&」「"」「'」を適切に処理すること(サニタイジング)により回避できます。これによりクッキーのハイジャック等のスクリプト混入を排除できるようにしてあります。

リファラースパム対策としてはIDやパスワードなど重要な情報はクッキーで受け渡すようにしました。それで、URLへの埋め込みはありませんから、リファラースパムの心配はありません。クッキーの有効期限はログアウト又は全てのブラウザーを閉じるまでに設定してあります。ログインの際に「会員IDとパスワードを保存する」にチェックした場合は90日間がクッキーの有効期間となります(楽天と同じ)。
ショッピングカートの場合、クッキーの有効期間は売り上げに関係していますからあまり短くはできません。ログアウト又はブラウザーを閉じる前にセッションが切れるということも望ましくありません。それは、せっかく来店したお客さんを追い返すようなものだからです。

ログインをはじめ、重要な情報はPOSTのみを受け付けるようになっています。そして、パスワードなど会員情報の変更時にはパスワードの再入力が必要となります。

また、パスワードを暗号化(ハッシュ化)してありますので、万が一、何らかの事故等によりデータが流出した場合でも対策を講ずるまでの十分な時間があります。いずれにしましても、そのような場合、会員データが流出してしまったという事実は変わらないので、早急な対策が必要になります。

パスワードの暗号化はハッシュ(不可逆暗号)を用いています。それで、パスワードの再発行ができません。それで、この場合、仮パスワード(10桁以上のランダム英数字)を作成して送信するという手法を用いています。会員は、仮パスワードでログインしてから、パスワードを変更して使うことになります。

古いバージョンでは、パスワードが暗号化されていませんでしたが、新バージョンのプログラムではパスワードを比較する際に暗号化されているか否かを判断していますので、暗号化されていないデータもそのまま用いることができます。パスワードは会員登録、会員情報の変更の際に暗号化されてファイルに保存されます。

パスワードはハッシュという方法で暗号化され保存されています。しかし、そうした暗号(ハッシュ)も年々突破されつつあります。コンピュータの計算速度の向上により総当り攻撃も8文字の英数字であれば1日程度で解読できるようです。こうした状況を踏まえ、現時点での最善策は以下の2つであると言われています。

 (1)ユーザーごとに異なるソルトを使い20文字以上を確保(レインボーテーブル対策)
 (2)ストレッチング

それで、最新版では、ユーザーごとに異なるソルトを使用すると共に、ストレッチングを導入しました。ストレッチングとはハッシュ値の計算を1千回〜数万回繰り返すことにより、計算速度を遅くする方法です。ハッシュ化する場合は、攻撃者に全ての情報が知られてしまってることを前提として考えますが、その場合これは有効な方法の一つです。攻撃者はどんな技術を使っても解読に時間が必要となってしまうのです。ストレッチングを1万回行うと1日でできることも1万日(30年近く)かかることになります。

最新バージョンではパスワードの保存方式が異なることになりますが、これまでの暗号化されたデータも使えるようになっています。会員登録したり、パスワードを変更した時点で新たな方式で暗号化され保存されます。それで、バージョンUP後、会員にパスワードの変更を勧めるのはよいことです。その際、パスワードには英(大文字と小文字)数字を全て使い最低8文字以上にすることも勧めて下さい。それと共に辞書攻撃などがしにくく、かつ推測しにくいパスワードにするようにもお知らせください。

【注】古い会員データのパスワードを一括して暗号化(ハッシュ化)するための手順を解説した「会員パスワード一括暗号化手順」はこちらをご覧ください。⇒会員パスワード一括暗号化手順

SSL業者&対応サーバ携帯ショッピングカートのセキュリティ対策
携帯でのXSS脆弱性対策は、PCと同じにしてあります。これまで、携帯ではこうした対策は必要ではなかったのですが、携帯の性能がUPするにつれPCと同じように問題になってきたからです。

また、PC同様、ログインをはじめ、重要な情報はPOSTのみを受け付けるようになっています。そして、パスワードなど会員情報の変更時にはパスワードの再入力が必要となります。それで、ソフトバンクのPOSTが使えない一部の機種(C2)では動作しません。

さて、携帯の場合、これまでドコモでクッキーが使えなかったために、IDやパスワードの情報をURL埋め込みの方法で受け渡さなければなりませんでした。これは、現在でも一般的な手法になっており、クッキーが使えないドコモの機種に関しては止むを得ません。従ってその場合、どうしてもリファラースパムの危険性があります。

リファラースパムは次のようにすることで回避できます。
   1)携帯ショッピングサイトに外部へのリンクをはらない。
その外部のサイトでリファラーを取得するようになっているとパスワードを盗まれることになります。リファラーを取得される一番分かりやすい例はアクセス解析を組み込むことです。ですから、携帯のカートの中には決してアクセス解析を組み込まないようにしてください。(ショッピングカートに付属のページ解析をご利用ください。)
もちろん、次のことは避けてください。
   2)パスワード付きのURLを他の人にメール送信したり、パスワード付きのURLでリンクを貼ったりしない。
もちろん、これは会員自身が注意すべきことになります。

しかし、そうした人為的な脆弱性を含めてパスワードが埋め込まれたURLが知られてしまう危険性を考慮しておくことは大切です。この点でも、パスワードの暗号化が役立ちます。会員パスワードに下記の情報を付け加えて暗号化(ハッシュ化)したものをURLに付けて引き渡します。こうすれば、そのURLを使っても異なる携帯からログインすることは困難になります。
1、UserAgent
2、識別番号(サブスクライバID、ユーザーID、シリアル番号など)
3、時間的な情報

上記の時間的な情報により、URLに付け加える暗号が有効な期間をset_class_pl/pass_code.plで下記のように設定できます。初期値は最終アクセス後、次の週まで有効となるように設定してあります(現在は初期値を次の日まで)。ショッピングカートでは有効期間を短くすることは避けたいのですが、短くすればセキュリティは向上します。
  0.暗号の有効期限を設定しない。
  1.最終アクセス後、次の月の月末まで有効。
  2.最終アクセス後、次週の土曜まで有効。
  3.最終アクセス後、次の日の24時まで有効。
  4.最終アクセス後、次の時刻の60分まで有効。(アクセス終了が15:30なら17時まで有効)

このような会員パスワードの暗号化は万が一パスワード付きのURLが他の人に知られてしまった場合でも、問題を最小限にとどめるための対策なのです。携帯ショッピングサイトに外部へのリンクを貼らない限り、パスワード付きのURLが流出することはありません(脆弱性はありません)。

また、誤ってパスワード付きのURLのリンクを貼ってしまっても検索エンジンに拾われないように、ログイン状態の場合に主要検索エンジンのスパイダーのアクセスをブロックするようにしました。それで、パスワード付きのURLが検索エンジンにインデックスされることはありません。

【注】固体識別番号はパスワードを暗号化してURLに付けて引き渡す際に使いますが、会員の認証に使っているわけではありません。あくまでも会員の認証はIDとパスワードで行ないます。固体識別番号はリファラースパムに対処するために使用します。固体識別番号による認証は偽装される可能性があるのです。

【携帯3キャリア及びiPhone、Androidの仕様の違い】

DoCoMo AU SoftBank iPhone Android
クッキー 利用不可。
2009/5(iモードブラウザ2.0)以降で利用可能
利用可能
常にon。
利用可能
offに設定できる。
利用可能 利用可能
リファラー 利用不可。
2009/5(iモードブラウザ2.0)以降で送信。
送信する。 送信する。 送信する。 送信する。
固体識別番号 formに記述して取得。常にメッセージ表示。
SSLでは不可。
ない。 取得可能。ただし、携帯側でon設定が必要。 ない。 ない。
ユーザーID formに記述して取得。常にメッセージ表示。
SSLでは不可。
公式サイトでは簡単に取得可能。
取得可能。ただし、携帯側でon設定が必要。 取得可能。ただし、携帯側でon設定が必要。 ない。 ない。
※iモードブラウザ2.0のUserAgentは機種により1,800種類以上あります(2010/6月現在)。ドコモの70%はまだクッキーが使えません。携帯全体では60%以上が使用可能。携帯の利用状況⇒cookie有効状況

ドコモでは公式サイトでない場合は固体識別番号やユーザIDの取得が簡単ではありませんが、反面これまではリファラーを出さないものが多く、その場合はリファラースパムの心配はありませんでした。AUやSoftBankでは固体識別番号やユーザIDを取得できますが(携帯側で番号通知がonになっている必要がある)、反面リファラースパムの危険性があります。そこで、固体識別番号やユーザIDが取得できる場合にはそれを利用するという考えはある程度有効と思われます。

【PCtoMobile以上の場合】
さて、クッキーが使える携帯が増えてきました。同時にPC並みの性能を持つiPhoneやスマートフォンも無視できなくなりました。それで、クッキーが使える場合にはクッキーを使うのが最善です。機種の判別によってではなく、実際にクッキーが使えるか否かをプログラムの方でテストして自動判定する方が簡単でしかも確実です。クッキーが使えない場合は上記のURL埋め込みの方法で行ないます。PCtoMobile、PCtoMobile2、PCtoMobile-U、Contents-Cart、Contents-Mall、Multi_Mail_Formで携帯のクッキーの利用を可能にし、iPhone、Android搭載スマートフォンにも対応させました。

ここまでをまとめるとこうなります。(携帯のクッキーの使用はPCtoMobile以上になります)
【1】クッキーが使える場合(クッキーが使える機種で、かつクッキーがonの設定の場合)
  暗号化されたパスワードをクッキーで受け渡す。この場合、URLは下記のようになります。
  http://*********.cgi?idname=guest&pass=secret

※guestやsecretはどんな単語でも良いのですが、URL埋め込みではなくクッキーで受け渡しているということを表しています。

【2】クッキーが使えない場合(クッキーが使えない機種又はクッキーがoffの設定の場合)
  暗号化されたパスワードをURL埋め込みで受け渡す。この場合、URLは下記のようになります。
  http://*********.cgi?idname=******&pass=(ハッシュ値80桁)

クッキーを使うメリットはセキュリティの面だけでなく、むしろ、固体識別番号やユーザIDを使わなくても簡単にログインできるようになるという点にこそあります。ショッピングカートの場合これは大きなメリットになります。わざわざログインしなくても済むなら購買意欲も高まるからです。ログインの際に「会員IDとパスワードを保存する」にチェックした場合はクッキーの有効期限は90日に設定してあります。携帯の場合、本人だけが使用するということを前提に考えることができます。それで、クッキーの有効期限は長く取ることができるのです。もちろん、ログアウトすることができますし、チェックしない場合はブラウザーを閉じるまでになります(ただし、AUの有効期限は1日となります)。

※PC・スマートフォン・タブレットでモバイルカート(k_shop.cgi、k_entry.cgi)にアクセスした場合は、クッキーONの時にログインできます。

※SSLではsecureモードで、非SSLでは非secureモードで書き込むように、クッキーのsecureモードの自動切換え機能を搭載しています。⇒SSLの設定手順

※FireFoxを使うと、PCから携帯ショッピングカートをテストすることができます。iPhone、Android搭載スマートフォンのテストもできます。UserAgentをいろいろ変えてテストしてみてください。⇒User Agent Switcher  ⇒サンプル (ドコモの場合は、「iモードHTMLシミュレーター」を使った方がいいようですね。⇒ 携帯やスマートフォンサイトのテストの方法


携帯対応SSLログイン状態の保持期間をユーザーが指定できるログイン方式
ショッピングカートの会員制機能において、ログイン時に、ログイン状態の保持期間をユーザーが指定できるログイン方式を搭載しました。
通常、会員制のログイン方式ではクッキー技術が用いられ、あらかじめクッキーの有効期間が一つに決められています。しかし、クッキーの有効期間をどのぐらいに設定するかはシステムの特徴やユーザーのPC環境と使用状況により異なってきます。
そこで、システム側で幾つかの選択肢を用意しておき、ユーザーがログイン時に選択できるようにしました。こうすることにより、システム開発者はあらかじめシステムの特徴に合わせて適切な選択肢を用意でき、同時に、ユーザーは自分の利用状況に合わせた最適なログイン保持期間を選択できます。さらにこれは、共有のPCを使う場合でもログイン状態の保持期間を意識した利用につながり、セキュリティ面でも効果が期待できます。

また、上記機能を搭載するに際して、トークンを発行してログインの認証を行う機能を導入しました。トークンはランダムなハッシュ値で、10分ごと(アクセス時)に更新されます。また、トークンには上記のログイン保持期間と同じ有効期限があります。「ログイン状態を保持する」にチェックしなかった場合の有効期限はデフォルトでは1時間となります。
このトークンの発行機能を導入することでユーザーのログイン状態を管理者側で管理することができるようになり、下記のことが可能となります。

1)「ログイン状態を保持する」にチェックしなかった場合、最終アクセスから一定の時間でログアウトします。
2)複数の端末(最大10個)からログインしている場合、一つの端末でログアウト、又は会員情報の変更をすると、全ての端末でログアウトできます。

【注意】バージョンUPでこの機能を導入する場合、これまでログインインしていたユーザーは初回にのみパスワードの再入力が求められます。

上記の機能を使うために、システム設定【4】で、ログイン状態を保持する期間(日数)を複数指定できるようになっています。さらに、トークン発行機能に関する設定ができます。

この新ログイン方式は、PCtoMobile以上のショッピングカートで採用いたしました。

サンプルはこちらをご覧下さい。
http://wb-i.kir.jp/sample/PCtoMobile/

また、 ショッピングカートPCtoMobile2において、「ログイン状態を保持する」を選んだ場合に、ブラウザーを閉じ再び開いた時に、ログイン状態を保持しつつパスワードを再確認する機能を搭載しました。

ブラウザーを閉じ再び開いた時に、パスワードの再確認が必要な機能は下記の通りです。
(1)会員情報表示
(2)会員情報変更
(3)会員情報削除
(4)注文履歴
(5)会員窓口
(6)送付先リスト

ログイン状態は指定した日数保持されており、お気に入り商品の表示と商品の購入手続きとお問合せはパスワードの再確認なしに可能です。

このパスワード再確認機能はPCtoMobile2のPCカートにのみ搭載されており、システム設定【4】でこの機能を有効にできます。

サンプルはこちらをご覧下さい。
http://wb-i.kir.jp/sample/PCtoMobile2/

【注】ログイン状態の保持期間をユーザーが指定できるログイン方式は【特許出願中】です。

携帯対応SSLショッピングカートの管理のセキュリティ対策
管理プログラムはクッキーにより管理者用パスワードの認証を行います。この認証は管理プログラムが呼び出されるたびに毎回行なわれます。

クッキーの有効期間はすべてのブラウザーを閉じるまでになっていますが、ログアウトすることを忘れないでください。この点は、他の人のPCで管理画面を使うときには特に注意が必要です。

また、管理者用のパスワードを暗号化(ハッシュ化−適切なソルトを用い、ストレッチングも採用)することにより、管理用のファイルが見られてしまった場合でも簡単にはパスワードを特定することができません。しかし、パスワードを定期的に変更することはいつでも良い方法です。

【注意】管理者用のパスワードを1234以外の値に設定して更新すると暗号化されます。

パスワードの桁数はセキュリティと関係があります。英字(大文字、小文字区別有)+数字で8桁のパスワードを解読する場合、最大50年かかるという報告があります。一方、英字4桁(大文字、小文字区別無)のパスワードは3秒で解析されてしまうそうです。ですから、簡単なパスワードを用いるとそれだけでシステムは脆弱なものとなってしまうのです。(パスワードを1文字増やすだけで、解読される時間は約 100 倍 、2文字増やせば 10,000 倍になるそうです。)

また、最新版では、トークンを発行してログインの認証を行う機能も搭載しおり、最終アクセスから2時間(デフォルト)で自動的にログアウトします。(システム設定【1】でこの期間を設定できます。)

また、IPアドレスが固定の場合はIPアドレスのチェック機能も付いていますので、セキュリティを一層強固にできます(ただ、IPアドレスは変化することがあります)。管理メニュー画面の下のほうにIPアドレスと設定方法が記されています。パスワードに対する昨今の攻撃を考えると、可能ならIPアドレスを制限することは賢明です。

携帯対応SSLその他のセキュリティ対策
ショッピングカートのセキュリティには、プログラムのセキュリティのほかに、データファイルのセキュリティ、通信回線のセキュリティがあります。それぞれ下記をご覧ください。
携帯対応SSLスパムアクセスへの対策
サーバ内のファイルは日に何百回となくアクセスを受けています。通常のネットの閲覧によるアクサセや検索エンジンのクローラーによるアクセスだけでなく、それ以上に悪意のあるプログラムによるスパムアクセスをたくさん受けています。通常は様々なエラーチェックにより、例えば商品の注文の最終段階にまでは至りません。最終段階まで至る確率は雷に当たる確率のようなものです。しかし、そうしたアクセスが何百万回となく繰り返されるうちにそれが現実のものとなる時がやってきます。

そうしたスパムアクセスのほとんどは海外からのものです。
それで、当社のショッピングカートでは、スパムアクセスへの対策を施しました。まず、海外からのスパムアクセスを防ぐためのチェック機能を標準で搭載いたしました。

それに加えて、より完全な形でスパムアクセスを撃退するスパムフィルター機能(オプション)をPCtoMobile以上で装備いたしました。(PCtoMobile Ver.16、PCtoMobile2 Ver.17、PCtoMobile-Unicode Ver.17、Contents-Cart Ver.16、Contents-Mall Ver.17)

【スパムフィルター機能】
(1)JavaScriptを使ったプログラム攻撃の防御
(2)フォーム偽装の発見

このスパムフィルター機能を利用するにはライセンスが必要になります。お求めはこちらからできます。
スパムフィルターのライセンスの購入

※現在のところ、これでスパムアクセスは100%撃退できるといわれています。
※フォームの偽装とは、注文フォームなどをコーピーして複製し、自社のサーバにUPしてPOST送信するものです。この場合は、アクセス元のドメインが異なるので発見できます。もっとも、当社のカートの場合は商品価格などの商品情報をデータとしてサーバ内に持っていますので、フォームを偽装されても実害はありません。

携帯対応SSLセキュリティ関連リンク



Copyright (C) 2012  WEBインベンター All rights reserved.