クレジット カード情報を MySQL データベースに保存しますか?を既に読みました。およびクレジットカード情報の保存。
クレジット カード情報の保存には PCI 準拠が必要であることは承知していますが、これは簡単な作業ではありません。
それはこの質問の目的ではありません。私の質問は次のとおりです。
ユーザーのクレジットカードを暗号化する安全な方法は何ですか? 頭に浮かぶ最も単純で簡単なのは、秘密鍵を使用し、それを使用して CC を暗号化することです。キーをサーバーに保存する必要があるため、これはあまり安全ではないようです。攻撃者が私のデータベースを取得できる場合、おそらくキーも取得できる可能性があります。
私ができるようにしたいのは、暗号化プロセスの一部としてそのユーザーのパスワードを使用してすべての CC を暗号化することです。パスワードがソルトハッシュとして保存されているため、誰かがデータベースを取得しても、何も復号化できません。これはトランザクション購入に最適です。ユーザーは「購入」をクリックし、確認としてパスワードを入力し、CC を復号化して請求します。ユーザーのパスワードは、リクエストの間のみメモリ内にあり、ディスクに書き込まれることはありません。
残念ながら、これは私が構築しようとしているサービスでは機能しません。請求する必要があるときにユーザーがログインしているかどうかに関係なく、定期的な料金 (たとえば、月に 1 回) を請求するサービスです。
このシナリオで、ユーザー CC を安全に保存する方法はありますか?