Posted at

カード決済のPCI DSS対応と決済方式について

More than 1 year has passed since last update.

オンラインでの決済が広がりを見せる中で、そのセキュリティが重視されるようになってきています。その一つ、大きな変革になるのが2018年03月までのPCI DSS準拠になるかと思います。


PCI DSSとは?

Payment Card Industry Data Security Standardの略で、クレジットカードの世界5大ブランド(AMEX、Discover、JCB、マスター、VISA)が定めたカードセキュリティの国際統一基準になります。

PCIDSSとは|日本カード情報セキュリティ協議会によると、認定取得までに行われるのは以下の調査になります。


  1. 訪問審査

  2. サイトスキャン

  3. 自己問診

自己問診についてはPCI Security Standards Council公式サイトに公開されています。これらの検査が必須であるかどうかはカードブランドごとに異なったり、インターネットを使った決済サービスを提供しているかどうかによっても異なります。多くの場合において、サイトスキャンと自己問診が基本になるようで、訪問審査はより大規模な場合になります(ブランドによりますが年間600万件以上処理するなど)。

自己問診はすべてYESにならなければ通過となりません。特にクレジットカード番号やCVC(セキュリティコード)などがサーバを通過する場合に求められるセキュリティレベルが格段に上がってきます。データベースに残すのはもちろんですが、サーバのログなどに記載される可能性がある場合も同様です。


クレジットカード決済の種類

Webサイトにおいてクレジットカード決済を提供する場合、幾つかの種類があります。


  • サーバ型

  • リンク型

  • モジュール型


サーバ型

PCI DSSで求められるレベルが一番高い、サーバにてクレジットカード番号を取り扱うものです。データベースなどにクレジットカード番号を保存し、決済金額とともに決済サービスに情報を送信します。

クレジットカード番号自体を取り扱いますので一番自由度は高い反面、セキュリティ面において注意が必要です。万一サーバがハッキングされたり脆弱性があったりすると、クレジットカード番号を抜き取られる可能性があります。


リンク型

決済において外部サービスを使うものです。多くはショッピングカートでの購入処理を完了し、決済は外部サービスに移動した上でカード番号を入力します。都度カード番号を入力するタイプや、楽天やAmazonなどのように彼らの持つログイン情報を使って決済代行を行う場合もあります。

リンク型の場合、カード番号を扱うことがないので高いセキュリティレベルは求められません。万一脆弱性があったとしてもカード番号が漏洩するようなことはないので安心です。

欠点としては購入と決済処理が分かれているため、購入は済んでいても決済処理を忘れてしまうことが一定の割合で存在することです。また、都度入力を行う手間であったり、既存の大手サービスのユーザになっている必要があります。


モジュール型

モジュール型では決済者がクレジットカード番号を決済事業者に送信し、その情報と一時的に使えるトークンに変換します。そして購入処理の際に決済金額とトークンを用いて決済処理を行います。この場合でもサービス提供事業者はクレジットカード番号に触れませんので高いセキュリティレベルは求められません。

利点は購入と決済処理を一度にできる点です。これによって決済忘れを防止できます。また、クレジットカード番号を保存しておけるサービスも多いので、繰り返し決済する際に都度カード番号を入力する手間も防げます。

クレジットカード番号の入力は、別ウィンドウを開いて入力する場合と、サービスサイトのデザインに合わせて変更できるタイプとがあります。デザインと合わせた場合、購入者としては決済サービスが別になっていることに殆ど気付かないのではないでしょうか。


開発力がある企業の場合、自社フォームでクレジットカード番号を入力することが多く、手軽に済ませたい場合にはリンク型が使われてきました。しかし昨今のセキュリティインシデントによって求められるセキュリティレベルが上がったことによって、サーバ型を選択するメリットが少なくなっています。

そんな中、注目されているのがモジュール型になります。購入者の見た目はサーバ型と変わらず、サービス提供事業者としてはリンク型と変わらぬ(またはもっと利便性の高い)セキュリティ上安心できる仕組みが用いられます。

モジュール型としては私がAPI Expertを努めているSquareの他、PAY.JPStripeなどが提供しています。この辺りのサービスを比較しつつ、導入してみてください。