1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

以前、PCIDSSに規格を取得するプロジェクトに参画したことがあり、
その中での教訓として、

「カード情報(PAN)は“そもそもサーバに送らない”のが一番安全」

という、基本だけど本質的な考え方です。

この記事では、決済に関連することとしてそのことをまとめます。

「カード非保持化」の重要性

PCIDSS では、カード情報(PAN/有効期限/セキュリティコード)を取り扱う場合、非常に厳しい要件が求められます。

  • サーバに保存してはいけない
  • ログにも絶対残してはいけない
  • 通信するなら暗号化必須
  • 保持するならネットワークや運用も含めて範囲が広大になる

つまり普通のWebアプリが気軽に扱ってよい情報ではありません。

調査を進める中で特に印象に残ったのは、

「カード番号を扱わない設計=PCIDSS対応が圧倒的に楽になる」

という点です。

実際、最近の決済サービスはすべて「カード番号は決済事業者へ直接送らせる」方式にシフトしています。

PAY.JP の“カード情報をサーバに送らせない仕組み”

PAY.JP の仕組みは非常にシンプルで強力です。

1. カード情報はフロント(JS)から直接 PAY.JP へ送る

ブラウザ
  ↓(カード番号など)
PAY.JP

このとき 自分のサーバは一切介さない 設計になっています。

2. PAY.JP がトークンを発行する

例:tok_xxxxxxxx

これは「カード番号の代わりに使える一時的なキー」です。

3. サーバに送るのはトークンだけ

ブラウザ
 ↓(トークン)
自分のサーバ

そしてサーバ側では、このトークンを使って

  • create_charge
  • create_payment
  • create_subscription

などを実行します。

サーバには PAN / 有効期限 / セキュリティコード は一切届かない。

これが PCIDSS でいう「カード非保持化」です。

導入が簡単なのも納得だなと感じました。
現代的な決済はすべて「非保持化」を軸に設計されており、PCIDSSを調べるほど理にかなっていると感じました。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?