私は、すべてのクレジットカード入力を処理する外部の決済処理業者に依存するオンライン決済システムを実装しています。私の支払い処理業者は、「クレジットカードトークン」を介した定期支払いをサポートしています。これらのトークン(実際のカード番号ではなく)のみを確認して保存し、それをプロセッサに送信されるAPIリクエストに含めて、1か月分のサブスクリプションを請求します。
私の質問:
私の支払い処理業者は、「クレジットカードトークン」による定期支払いをサポートしています。
つまり、誰かが購入すると、あなたまたは顧客のいずれかがクレジットカードをプロセッサーに送信し、プロセッサーがトークンを返却します。クレジットカードとは異なり、そのトークンを他の場所に移動して使用することはできません。この1人の顧客を表すことは、あなたとあなたのプロセッサの間でのみ有効です。あなたは彼らのクレジットカードを保存しません。あなたはそれをすべて忘れ、代わりにトークンを使用します。
プロセッサはクレジットカード番号を保持し、「このトークンをチャージする」と言うときはいつでも、カード番号を使用して請求を行います。
このシステムの利点は、PAN( "Primary Account Number")データを保護する責任がないことです。これにより、セキュリティと監査の懸念が簡素化されます。顧客がカードを渡すように手配した場合番号を最初に渡さずに直接プロセッサに渡すと、PCIの範囲と義務を大幅に減らすことができます。
これらのトークンを保存する最良の方法は何ですか?
通常、データベース内。懸念がある場合は、PANデータに使用する必要があるのと同じレベルの暗号化と保護は必要ありません。
システムが侵害され、誰かがトークンを入手した場合はどうなりますか?
誰かがトークンのデータベース全体を盗んだ場合、トークンを使用して何もすることはできません。 あなたあなたプロセッサーにあなた資格情報を使用してプロセッサーに送信する場合を除いて、これらは何にも適していません。顧客は二重請求されていることを確認しています。 (そして、それを収益化する唯一の方法は、あなたの「会員」サイトがワインのケースのような価値のある何かを顧客に出荷し、攻撃者がその出荷を傍受する可能性がある場合です。).