web-dev-qa-db-ja.com

Webアプリにクレジットカード番号を保存しないように会社を説得する

私が勤務している会社には、顧客のアカウントに毎月クレジットカードの請求を行うシステムが必要です。お客様は、PHPで記述されたオンラインインターフェース(HTTP over SSLを通じて表示されます)からクレジットカード情報を更新できます。月額料金は、同じインターフェースのパスワードで保護された管理領域を通じて手動で実行されます。これは、基本的にはAuthorize.NetのAPIへのバッチ呼び出しになります。

私の同僚は、(暗号化された)クレジットカード情報をMySQLデータベースに保存したいと考えています。彼らはおそらくRijndael/AESまたはTwofishを使用して PHPのmcrypt拡張 でクレジットカード番号を暗号化することを計画しています。キー管理の主題は終わりましたが、次の2つのオプションについて言及しました。

  1. キーをデータベースに保存します。クレジットカードのエントリごとに個別のキーを使用します。または

  2. すべてのクレジットカードエントリの単一の暗号化キーを変数としてPHPファイルに格納します(PHPなどのWordPressアプリケーションおよびMediaWikiがデータベースの資格情報を格納する方法と同様) 。

どうすればこのルートに行かないように説得できますか?支払い処理に Authorize.net を使用するので、彼らの 顧客情報管理者 クレジットカード情報を自分で保存する代わりのサービス。しかし、私は説得力のある議論をするほど主題をよく知りません(私の議論は「私たちの誰もがセキュリティの専門家ではない」、「この方法でクレジットカード情報を保存する会社に不快に思う」でした)。

それらを納得させることができない場合Customer Information Managerのようなサードパーティのサービスを使用する場合、どのようなことに留意すべきですか?顧客のクレジットカード情報を安全に保つために?特に、暗号化キーをどのように管理すればよいですか?顧客のエントリごとに個別の暗号化キーが必要ですか? Authorize.Netにトランザクションを送信する前にクレジットカード情報を復号化できるように、キーをどこに保存できますか?上記の2つのオプションは私にはあまりよく聞こえないように見えます(ただし、この件についても、どちらかに対して説得力のある議論をするほど十分に理解していません)。


更新:PCI DSSコンプライアンスに詳しい社内の誰かを見つけたので、彼と協力してこれが確実に行われるようにします正しく行われました。ただし、私は上記の質問に対する回答を引き続きいただければ幸いです(私の知識を向上させ、同様の状況で他の人を支援するため)。

更新2:成功しました!別の開発者が座り、PCI DSSガイドラインを読んで、結局のところ、自分で情報を保存することは悪い考えだと判断しました。 Authorize.NetのCustomer Information Managerサービスを使用します。

38
M8R-53mg86

カード番号を保存することは、PCI-DSSの要件に準拠する必要があることを意味します。そうしないと、罰金や販売アカウント契約の違反のリスクがあります。 PCI-DSSには非常に多くの要件が設定されています-実用的、煩わしい、疑問の余地のある有用性-それに準拠し、準拠したことを証明するためのコストは非常に高くなる可能性があります。

ダウンロード PCI-DSS 2.0標準 と恐れてください。

特に、提案されているアプローチはどちらもPCI-DSSに準拠していません。キーを保護せずに保存したり、保護されているカード会員データと同じ場所に保存したりしないでください。

これを社内で実装する必要がある場合、PCI-DSSが限られた数のシステムにのみ適用されるように、カード番号に関連するコンポーネントを他のものから分離する必要があります。トークン化ソリューションを見て、カード会員データの漏洩を最小限に抑えます。これを正しく行わない場合、すべてのサーバー(またはすべての企業デスクトップ!)をPCIスコープに簡単にドロップできます。この時点で、コンプライアンスは不可能になります。

Authorize.netは自動化された定期的な請求サービスを提供します。正気の愛のために、それを使用してください。

33
bobince

「私たちの誰もセキュリティの専門家ではありません」および「この方法でクレジットカード情報を保存する会社に不快に思うことはない」は完全に有効な主張です。技術的な観点から(メリットに関して)、彼らははずで議論を終了します。しかし、セキュリティの専門家でない人々と議論している場合、彼らは良い議論を認める立場にないかもしれません。

ですから、メリットについて議論してもどこにも行かないことがわかった場合は、プルアウトしてくださいThe Sledgehammer of Compliance(官僚に対して+20のダメージを与えます)。特に、PCI DSSを思い出してください。 PCIを達成するためのコストを見積もったかどうかを尋ねるDSSコンプライアンス。この機能が提供する追加の収益の費用便益分析を依頼します(通常、答えは0です) )およびビジネスへのコストはどのくらいになるか(通常、答えは大きいです)。ほとんどの場合、それはゲームオーバーです。

または、少なくともそれは議論を終えるべきです。そうでない場合は、これは最終的にはビジネス上の決定であり、マネージャーは適切な電話をすぐに認識する必要があるため、マネージャーに相談してください。

そして、あなたのマネージャーがそれを取得しない場合、まあ、私が提案できるすべては、新しいマネージャーを取得することです。多分それはあなたの履歴書を更新する時が来ました。

28
D.W.

あなたの会社がPCI DSSのオンサイト評価を以前に受けた、またはSAQ Dのすべての質問に答えようとしたことさえあるように思われません。カード所有者のデータを取り除く方法を探しており、そうするのにコストがかかりすぎないことを期待しています。ソリューションの実装にまだコストがかからない段階になったら、データを絶対に保存する必要がありますAuthorize.netまたは別のサードパーティ。

同僚にできる最善の議論は、面倒なPCIの大きさと、カード所有者のデータを自分で保存していない場合にどれだけこの面倒が軽減されるかを説明することです。 PCIコンプライアンスの維持はフルタイムの仕事です。カード会員データを保存している場合、コンプライアンスを維持するために満たす必要のある要件が非常に多くあります(PCI DSS SAQ DはSAQ Cの2倍です)。データのオフロードは正直なところ、自分でデータを保存することさえ考えていません。

7
freb

ほとんどの上司/同僚は、あなたが彼らに提示しているかもしれないすべての「技術的な」問題を必ずしも理解しているわけではありません。

したがって、あなたは彼らが完全に理解できる領域でそれらに取り組む必要があります-コスト/お金。

これを説明するときに私が役立つと思うことの1つは、ハッキングされてクレジットカード情報が盗まれた場合、罰金だけでなく、新しいクレジットカードの再発行の費用にも責任があるということです。

例:会社に100,000のクレジットカード番号がある場合、罰金などを支払う前に、カードを交換するために100万ドルの費用がかかります(PCIに準拠していない場合、CFOは刑務所に行くことができます)。

彼らが自分の財産に保険を持っているように

4
pzirkind