0

支払いを処理するラッパーを作成しています。リクエストをログに記録したいが、機密性の高いクレジット カード データを保存したくない。以下のようなクエリ文字列が渡されます

amount=100.00&expMonth=01&expYear=14&cardnumber=4111111111111111

クレジット カード番号の最初の 12 桁を X 値でマスクしたいと考えています。ただし、カード番号キーは常に同じ場所にあるとは限りません。

私の最初の学びは、 を作成しNameValueCollectionてキーをチェックし、string.format("XXXX-XXXX-XXXX-{0}", substring of the value

var qs = HttpUtility.ParseQueryString(request);
foreach (string key in qs)
{
    if (key == "creditcard")
    {

    }
}

誰かが私を正しい方向に向けることができますか?

クレジット カード番号だけをマスクして、文字列を同じ形式で保存する必要があります。

4

2 に答える 2

0

賢明なアプローチのように思えますが、Getメソッドを使用するNameValueCollection方が簡単かもしれません。そのようです:

String maskedCardNumber = null;
var qs = HttpUtility.ParseQueryString(request);
var cardNumber = qs.Get("cardnumber");
if (cardNumber != null)
{
    var substring = cardNumber.Substring(cardNumber.Length - Math.Min(4, cardNumber.Length));
    maskedCardNumber = String.Format("XXXX-XXXX-XXXX-{0}", substring);
}
于 2013-12-27T21:56:04.843 に答える