3

そのため、合理的に有能な Web 開発ショップと同様に、クレジット カードに触れるときは綿の手袋を着用し、Braintree SecureVault を使用してクレジット カードを保存し、PCI コンプライアンスの問題を回避しています。

ただし、現在、サービスの無料トライアルを提供したいと考えています。これは、無料トライアルで特定のクレジットカードが1回だけ使用されることを保証できることにほとんど依存しています. 理想的には、一意性を保証するためにクレジット カード番号自体をハッシュできるようにすることです。問題は、有効なクレジット カード番号のセットが少ないことです。そのため、クレジット カード番号をブルート フォース攻撃するのは簡単です。私が見る限り、ソルティング戦術は無用です。誰かがハッシュのデータベースにアクセスできる場合、おそらくコードもソルティング アルゴリズムも持っているからです。

これまでのところ、最良の 2 つのアイデアは次のとおりです。

A) 請求情報とは関係なく、ハッシュを分離してセットに保持する。したがって、ハッシュがブルート フォースである場合、ある時点で使用されたクレジット カード番号のリストだけが残り、個人情報や、それがまだ有効であるかどうかさえわかりません。ここでの主な弱点は、ある程度一致させるために使用できる可能性のあるベスト 4 の記録があることです。

B) 完全な数値なしでハッシュし、偽陽性と偽陰性に対処します。name、last-4、および有効期限のハッシュは、かなり一意である必要があります。偽陽性は宝くじに当たるようなもので、カスタマー サポートで対処できます。名前の変更によって偽陰性が誘発される可能性があります。名前の一致の精度についてどのような保証があるかは明確ではありません (ゲートウェイとマーチャント アカウントの両方によって影響を受ける可能性があると私は理解しています)。

考え?提案?試練に満ちた知恵?

4

2 に答える 2

1

高レベル: 既存の支払いシステム
を使用する このアプローチ (クレジット カード番号を使用して、ユーザーが既に無料トライアルを利用しており、その後の無料トライアルの資格がないかどうかを判断する) は誤った方向に進んでいると思います。第一に、試用期間が終了した後にのみクレジットカードを要求するのではなく、事前にクレジットカードを要求することで潜在的な顧客を遠ざけてしまいます (実際に購入する準備ができていない限り、多くのユーザーは提供しません)。

第二に、車輪の再発明です。支払いと試用期間のための組み込みメカニズムを提供する「アプリ ストア」(Chrome ウェブストア、Android マーケットプレイス、iTunes アプリ ストアなど)が多数あります。これらのシステムを使用すると、製品の消費者への認知度が高まり、潜在的な顧客に複数の異なる支払い方法が提供され (購入意欲が高まります)、このメカニズムを自分で実装する手間も省けます。さらに、ユーザーは一般的に、できるだけ少ない数の会社にクレジット カードを提供することを好みます。この複雑なメカニズムを自分で実装する必要があるだけでなく、ユーザーに信頼して使ってもらう必要があります。

下位レベル: 実装の詳細
どのハッシュ メカニズムでも衝突が発生する可能性があるため、この問題に対処する必要があります。サーバーでは、ディスク全体の暗号化やその他のセキュリティのベスト プラクティスを使用する必要があります。データベースとソルティング アルゴリズムの両方が同時に危険にさらされるリスクは、このコードをホストするマシンとは別のマシンでバックエンド データベース サービスをホストすることで軽減できます。ハッシュの主な脆弱性はブルート フォース攻撃です。そして、それらに対処する最善の方法は、ブルート フォースのコストを十分に高くして、攻撃者が時間をかけずに済むようにすることです。各エントリに個別のソルトを使用すると (例: ソルトの一部として顧客の名前、顧客の郵便番号など)、レインボー テーブルの使用が無効になります。もちろん、攻撃者にとってデータ自体の価値が低くなります (例: 完全なクレジット カード番号を含めない) も、この種の攻撃を思いとどまらせる良い方法です。いずれにしても、これを自分で実装するのではなく、多くのアプリ ストアを利用することをお勧めします。

于 2011-02-10T00:59:32.390 に答える
0

何かを見逃していたらすみませんが、クレジットカード番号のSHA512ハッシュとおそらく有効期限である単一の列を持つ「UsedCreditCards」のテーブルを作成できないのはなぜですか. これを元に戻すことはできず、別のテーブルに保持し、コードに関する他のデータを保存しないことで、クレジット カード番号が以前に使用されたかどうかを簡単に確認できます。

これがPCIに違反するかどうかはわかりません(そうは思いませんが、間違っている可能性があります)

于 2011-02-10T00:37:57.573 に答える