web-dev-qa-db-ja.com

SEPA(IBANおよびBIC)情報を正しくマスクする方法は?

現在、ユーザーがSEPAデビットを使用してサービスの料金を支払うことができる支払いシステムを開発しています。ユーザーは一度データを入力することができ、その後別の支払いを行うときに同じ支払い方法を選択できます。

したがって、ユーザーが引き落としに適切な口座を選択するために、私は彼女/彼の口座に関するいくつかの情報を示す必要があります。クレジットカードの世界では、カード番号の下4桁を除くすべてをマスクするのが普通です。 XXXX-XXXX-XXXX-1234

IBAN番号を表示するときに、下4桁以外をすべて非表示にする必要がありますか?また、BICについても同じことを行う必要がありますか、それとも完全なBIC番号を表示しても安全ですか?

5
devsnd

クレジットカード番号とは異なり、IBAN番号は秘密にされていません。誰かがあなたの銀行口座番号を知っている場合、その口座番号からIBAN番号を取得できます。そして、彼らはあなたに支払うためにあなたの銀行口座番号を知る必要があります。

同様に、BICも秘密ではありません。

とはいえ、銀行口座番号やその他の識別情報を使用して商品を注文できる場合があるため、銀行口座番号/ IBANについて必要以上の情報を表示しないことをお勧めします。これは、ユーザーのプライバシーとユーザーエクスペリエンスのトレードオフでもあります。

(このシナリオの例は、おそらく何かへの復讐として、誰かがあなたに危害を加えるためのものです。彼らはあなたの銀行口座番号やその他の個人情報を入手し、あなたの名前で物事を注文し始めます。明らかにこれは違法で愚かですが、不可能ではありません。害を取り消すことはできますが、より快適な方法で費やしたい場合は、時間と労力がかかります)。

口座番号は ほぼ常にIBANの最後の番号 であり、通常、口座の最後の番号は、ユーザーが同じ銀行で持つ可能性があるさまざまな口座を識別します。運用している国によっては、銀行のIDとともに最後の3桁または4桁のみを表示すれば十分です。

国の詳細を知らなくても、違いはわかりません。なぜクレジットカード番号が秘密でIBANなのかはわかりません。それらのいずれか(IBANの場合は名前も必要です)を知っていると、支払いをしたり、インターネットを介して商品を注文したりできます(たとえば、ドイツでは、Amazonから注文するにはIBANと名前のみが必要です)。 誰かが私のIBANと個人情報を知っている場合、誰かが私の銀行口座からお金を盗むことはできますか? を参照してください。

ですから、IBANの口座番号とBIC部分の両方を保護することをお勧めします。なぜなら、IBANチェックサムを使用して、典型的な口座番号を知っている銀行口座の桁数が少なすぎる場合(たとえば、最後の2つの口座番号の桁が常に00)(BICで識別される)特定の銀行では、誰かがアカウント番号をブルートフォースする可能性があります。

例としてドイツのIBANを取り上げましょう。それはいつものように見えます

DEcc bbbb bbbb aaaa aaaa aa

DE-国コード、cc-チェックサム、b-BIC部分、a-アカウント番号部分。

次のようにマスクするとします。

DEcc bbbb bbbb XXXX aaaa XX

私の目では、チェックサムとBICを知っているので、それはまったく良くありません。 BICから、銀行には(1)それほど多くの口座がなく、(2)下2桁は他の種類の口座用に予約されていることがわかりました。メインアカウントは00、パートナーアカウントは01、長期預金は02などです。したがって、この銀行および営業/決済口座の最後の2桁は常に00です。

今、私たちは4桁残っています。しかし、(1)から、銀行のクライアント数は1,000,000未満であると結論付けました。この銀行の口座は常に次のようになります

00aa aaaa 00

だから今私は最初の2つの「a」を推測する必要があるだけです。しかし、私はチェックサムを持っているので、とても簡単です。銀行に100万人を超えるクライアントがいる場合でも、最初の桁が国の地域、口座が開設された場所などを識別するシステムが存在する可能性があります。

3
Andrey Sapegin