web-dev-qa-db-ja.com

MySQLデータベースにクレジットカード情報を保存しますか?

毎月請求できるように、お客様のユーザーがクレジットカード情報を入力できるようにします。

この情報をどのように保存する必要があるのでしょうか?

MySQLデータベース(「ユーザー」テーブル)に保存する必要がありますか、それともこの種の情報は機密性が高く、別の場所に保存する必要がありますか?

私はこれを経験していないので、誰かがこれを達成する方法をアドバイスしてくれると嬉しいです。

ありがとう。

37

上記のように、クレジットカード情報をデータベースに保存しないでください。それはトラブルのレシピです。そうすることで、ハッカーにとって非常に魅力的な標的になり、ハッカーがそれらを取得することに成功した場合、ビジネスを終了し、クレジットカード番号が盗まれた人の命だけでなくあなたの命をも損なう可能性があります。

とはいえ、次の3つの考慮事項があります。

1)最善の策は、定期的な請求を提供する支払いプロセッサ/支払いゲートウェイを使用することです。この例は Authorize.Netの自動定期請求 サービスです。サブスクリプションを設定すると、毎月自動的に自動的にユーザーに請求され、取引の結果が通知されます。それはあなたに多くの仕事を節約し、クレジットカード情報を保存する責任からあなたを解放します。

2)店舗のクレジットカード番号を保存する場合は、 PCIガイドライン に従う必要があります。これらのガイドラインは、支払いカード業界によって設定されており、できることとできないことを定義しています。また、クレジットカード情報の保存方法も定義します。クレジットカード番号を暗号化する必要がありますが、必須ではありませんが、関連情報(有効期限など)を暗号化します。また、Webサーバーとネットワークが安全であることを確認する必要があります。 PCIコンプライアンスを満たさないと、マーチャントアカウントを失い、真のマーチャントアカウントを永久に持つことが禁止されます。そのため、柔軟性の低いサードパーティのプロセッサを使用することに制限されます。 PCIガイドラインは良い出発点ですが、オンラインセキュリティに関しては「ハウツー」ではないことに注意してください。あなたの目標は、推奨事項を(かなり)上回ることです。

3)州および国固有の法律はPCIコンプライアンスに優先します。侵害を受けてクレジットカード番号が盗まれた場合、刑事訴追のリスクがあります。法律は州によって異なり、議員はこれがいかに重大な問題であるかを認識し始めたばかりであるため、常に流動的です。

暗号化に関しては、どの暗号化アルゴリズムが安全で、まだ壊れていないかを必ず確認してください。 Blowfish は良いスタートであり、PHPを使用する場合は mcryptライブラリ が推奨されます( example )。

82
John Conde

最も安全な方法は[〜#〜] not [〜#〜]システムにクレジットカード情報を保存することです。しかし、3rd パーティの支払いプロバイダがあなたのためにそれを行います。

16
ZippyV

Paypalなどのようなサードパーティの支払いプロバイダーを使用する必要はありません。ただし、支払いカード情報を保存する場合は、 PCI準拠 である必要があります。 BCフェリー、PCIコンプライアンスを最新に保てないことで相当額の罰金に直面する について読んで、PCIコンプライアンスがどれほど深刻であるかを把握してください。

私の現在の雇用主はPCIコンプライアンスを行っています。これは簡単なプロセスではなく、監査のためにスタッフが必要です。施行は国および州/州の法律に依存します。カナダIIRCでは、PCI採用委員会によるPCI認定を義務付けていますが、米国の一部の州では、PCIコンプライアンス監査会社がPCI委員会の代わりを務めます。

6
OMG Ponies