次のリンクを参照してください。
https://www.karansaini.com/fuzzing-obfuscated-phone-numbers/
https://www.alldigitaltricks.com/wp-content/uploads/2017/12/kotak-bank-change-mobile-netbanking.png
https://www.trickolla.com/2016/12/Register-Mobile-Number-With-Bank-of-Baroda.html
手元のユースケースは、携帯電話番号の一部をユーザーに表示することです。たとえば、「* * * * * * 1 2 3 4で終わる携帯電話番号を続ける」のようにします。
問題は、ユーザーがモバイルの最後の4桁を選択できるため、最後の4桁のコリードが存在する可能性があり、他のメカニズムが必要なオプションを一意に識別するために、そのようなオプションを複数表示していることです。
私が考えているオプションは:
オプション1-1、2および最後の2桁を表示する '1 2 * * * * * * 3 4'
オプション2-5番目、6番目、最後の2桁を表示する '* * * * 1 2 * * 3 4'
オプション3-代替数字を表示する '1 * 2 * 3 * 4 * 5 *'
オプション4-下4桁を表示する '* * * * * * 1 2 3 4'
私たちの国/ターゲット市場のオプション4の問題は、ユーザーが最後の4桁を選択できるため、特定のユーザーに高い衝突があります。
--------- EDIT -------------
私の使用例では、UIプランで、以前に行われた登録の1つを使用するために顧客に複数のオプションを表示します。
次のようなものです。1.携帯番号5647 234 4567のアカウントを使用します。2.携帯番号7868 456 7891のアカウントを使用します。3.携帯番号4321 321 1989のアカウントを使用します。
ただし、画面上に携帯電話番号全体を表示する代わりに、末尾または部分的な番号を表示したい。ここでの質問は、それをユーザーに表示するための最良のオプションの一部です。そのため、オプション1を使用する場合、つまり最初と最後の2つを表示し、他をマスクします。こんな感じになります。
続行するために使用できる数をユーザーに表示する理由は、使用したい数を要求するためです。したがって、あなたの目標は、その数が正しいかどうかをユーザーに知らせることであり、この目標のために、ユーザーはそれを正しく分類する必要があります。ほとんどのユーザーは、国コードの背後にあるローカルコードに基づいて携帯電話番号を分類すると思います。例えば。ドイツでは国コードは+49
とローカルコードは015x
、106x
、107x
。ですから、多くのユーザーは、+49 163 ****
のみ。一部のユーザーは同じ国と市内番号を持つ複数の携帯電話を接続している可能性があるため、最後のベース番号でこのエクスペリエンスを向上させることができます。結果は+49 163 *** ** 91
。
いくつかの仮定:
a)対象国はインド。
b)ユーザーは下4桁を選択できます。
c)SIMカード/番号が特定の期間/場所で購入された場合、最初の4桁が同じになる可能性が非常に高くなります。 最初の4桁はネットワークオペレーターとテレコムサークルを識別します。
質問の4つのオプションを厳密に説明します。
オプション4とオプション1は失敗する可能性が高くなります。オプション2とオプション3のうち、5番目と6番目の桁の数字が表示され、1人のユーザーの複数の電話番号で発生する可能性が少ないため、ユーザーにとってオプション2の方が簡単です。
追伸私の家族の1人がこのファッションの2つの電話番号を持っているので、この質問は興味深いものでした。ABCD3 UWXYZとABCD 0 UWXYZです。その人がこの製品を使用している場合、オプション1とオプション4は失敗します。
何らかの理由で、ユーザーに複数の携帯電話番号が表示されていて、それらを難読化したいと考えています。私にとって最良の戦略は、ユーザーに表示するオプションを比較し、それに応じて難読化することです。
次のPythonの例を参照してください。 http://tpcg.io/WlwN71
def obfuscateNumbers(num1, num2, showDigits):
num1_obfus = '';
if(num1[len(num1)-showDigits:len(num1)] != num2[len(num2)-showDigits:len(num2)]):
for Dig in num1[0: len(num1)-showDigits]:
num1_obfus += '*';
else:
mismtachFound = 0;
for idx in range(len(num1)-showDigits):
if(num1[idx] == num2[idx] or mismtachFound == 1):
num1_obfus += '*';
else:
num1_obfus += num1[idx];
mismtachFound = 1;
num1_obfus += num1[len(num1)-showDigits:len(num1)];
return num1_obfus;
num1 = '123456789';
num2 = '123456769';
num3 = '124356789'
secret = obfuscateNumbers(num1, num2, 2);
print num1 + ' changed to ' + secret;
secret = obfuscateNumbers(num1, num3, 3);
print num1 + ' changed to ' + secret;
メソッドは2つのセル番号(同じ長さであることを確認)を受け取り、出力に表示する必要がある最後のx桁を表す番号も受け取ります。
例1-たとえば、123456789と123456769を渡して、最後の2桁が常に存在するようにします(例ではnum1とnum2)。コードは、最後の2桁がすでに異なるかどうかをチェックします。これがケースです-num1は次のように難読化されます:******* 89
例2-123456789と124356789を渡して、最後の桁が3と表示されたとします。両方の番号の最後の3桁が同じになりました。したがって、ロジックは2つの数値が異なる最初の場所を見つけようとし、それに応じて難読化します。** 3 *** 789
最初の2桁と最後の2桁を表示するので、オプション1を使用します。
通常、下4桁を表示することをお勧めしますが、ユーザーは自分の番号を選択できるとおっしゃっていました。一般的に、電話番号の最初の数桁は通信事業者に関連しています。つまり、これらの番号は多くの人にとって同じであるため、最後の4桁よりも重要性が低くなります。あなたの場合、どちらも同じくらい重要であると私は主張します。一部の人々は職場の電話と個人の電話の両方を持っているので、特に両方が同じ通信事業者からのものである場合は、プライバシーの問題を引き起こさずに番号を特定できることが不可欠です。ユーザーが意図的に電話番号ごとに常に同じ4桁を保持するシナリオはありそうにないので、自分で選択できない数字を表示する必要があります。オプション1はそれをカバーします。
オプション2と3は、ユーザーが電話番号を一連の順序で覚えている傾向があるため、ユーザーフレンドリーではありません。このようにフォーマットされている場合、自分の番号を認識するために、すべての数字を精神的にリストアップする必要があります。それはもう少し努力であり、より安全であると証明されていません。
説明しているシナリオは、ユーザーが複数のオプションに直面し、情報の一部しか表示されない場合に発生する可能性のあるシナリオの1つにすぎないようです。隠す数値が多いほど、エラーのリスクが高くなります。そのため、番号の一致を回避するのに最適な組み合わせで番号を表示することを決定できますが、これがすべてのユーザーに対して発生するコンテキストを常に念頭に置いてください。
結局のところ、最適な方法は、間違った結果としてユーザーの不安を減らす方法です。したがって、ユーザーが複数の数値から選択する必要があり、それを誤解するリスクがあるシナリオでは、次の結果が考えられます。
特にエラーのリスクが高まる場合は、どのオプションを選択する場合でも、考えられる結果を考慮に入れてください。これを増やす場合は、ユーザーが問題を簡単に解決できるようにしてください。たとえば、SMS確認ステップを設定すると、彼らは間違いに気づく可能性があります。これが役に立てば幸いです!
インドの携帯電話番号の場合、最初の4つの番号はオペレーター(電話会社)のコードであり、最後の6つの番号はユーザーアカウントに割り当てられた番号であることを読みました。
インドでは、各ユーザーが通常すべてのアカウントで同じ電話会社を使用している場合、最初の4つの番号のいずれかを表示することは無関係であり、最後の6桁を表示することが適切です。 「... 123456で終わる携帯電話番号」
(1)最初の記事は、一般大衆が電話番号の一部を表示したWebサイトを使用しないことを提唱していることを覚えておいてください。 (2)スクリーンバンキングアプリはパスワードで保護されており、バンキングアプリでは、数分間使用しないとユーザーはログアウトされます。