1

クレジット カードの支払い承認を管理するために、PHP を使用してマネージャー クラスを構築しています。クレジット カードの場合First6、 、last4expiration_Monthおよびを保持できますexpiration_Year

これら 4 つの変数の組み合わせがどれほどユニークで、別の変数に遭遇する可能性が高いかを知りたいと思っています。

新しいカードの有効な承認を既に取得しているかどうかをテストする時期に影響する可能性に応じて. 特定のカードの承認を既に取得している場合は、再度番号を実行する必要はありません。代わりに、すでに承認されているカードを見つけて、再承認を行うことができます。ただし、似てFirst6いるlast4、、、expiration_Monthおよびexpiration_Year..

私の目標は、クレジット カード データのデータ冗長性、CC プロセッサ API へのヒット、および顧客カードの不要な認証を制限することです。

4

2 に答える 2

5

最初の 6 は、あなたが扱っているカードの種類を示します。発行者のリストについては、以下を参照してください。

http://en.wikipedia.org/wiki/List_of_Issuer_Identification_Numbers

最後の 4 つは基本的にランダムです。月は基本的にランダムで、年は現在の年からおそらく 6 年後までの小さな範囲になります。その年は、可能な値の間にある程度の偏りが見られます。

これらのアイテムを組み合わせてカードを一意に識別しようとすると、ほぼ確実に衝突が発生します。それは信頼できることではありません。

編集

このシナリオに似た最近のセキュリティ違反の例を次に示します

http://blogs.cisco.com/security/6-5-million-password-hashes-suggest-a-possible-breach-at-linkedin/

http://www.infoworld.com/d/security/nvidia-investigating-breach-of-hashed-passwords-197796

https://www.infoworld.com/d/security/passwords-leaked-yahoo-boozy-preachy-angry-and-easy-197696

ハッカーが大規模な Web 企業のデータベース (通常、アーキテクチャの中で最もファイアウォールが適用されていない部分) からデータをダウンロードできる場合、アプリケーション層にアクセスしてソース コードまたはコンパイルされたアプリケーションを取得できる可能性が非常に高くなります。データ層。

于 2012-12-10T21:06:05.733 に答える
3

前の回答を拡張するには。左の 6 つは BIN であり、おそらくすべてのカードで同じであるため、これらはカードを一致させるのに役立ちません。右の 4 つがランダムで、月がランダムで、年が 6 つの値のうちの 1 つであることを考えると、10000 * 12 * 6 = 720,000 の一意の組み合わせがあることを意味します。

合計 100,000 枚のカードがある場合、衝突する確率は 7 分の 1 です。1,500,000 枚を超えるカードがある場合、すべてのトランザクションで衝突がほぼ確実に発生します。

于 2012-12-11T01:49:16.307 に答える