2

暗号化されたクレジット カード番号をC# (.net フレームワーク)の SQL データベースに保存する最善の方法は何かと考えていました。String/SecureString/Byte Arrayある種のを使用して手動で行う必要がありsymmetric encryptionますか?

別の方法 (そしておそらくより簡単なオプション) として、サービス プロバイダー(取引を行う側) が、key取引情報を取得するために使用できる を提供すると聞きました。このアプローチの方法がわかりませんが、これはより良いオプションですか?最も安全で安全なオプションが必要です。PCIにも準拠したい。

4

2 に答える 2

3

更新:この回答を書いてから 3 年間で、PCI についてさらに学び、新しい仕様がリリースされました。以下の情報は間違いではありませんが、手順 1 ではPCI の対象範囲「D for Merchants」レベルに設定されており、これが最も面倒です。

これを処理するより良い方法は、自分でカード データに触れないことです。データを送信するプロセッサーが提供するフォームを使用するか、単にリダイレクトするだけです (PayPal のように)。どちらのオプションでも、認定がはるかに簡単な「A」または「A-EP」レベルになります。

どちらの方法でも、安全に保管できるトークンを受け取ることができるため、手順 3 と 4 は引き続き適用できます。


元の回答:

別の方法 (そしておそらくより簡単なオプション) として、サービス プロバイダー (取引を行う相手) が、取引情報を取得するために使用できるキーを提供すると聞きました。

これは本当です。基本的に、プロセスは次のとおりです。

  1. 顧客/ユーザーからクレジット カード情報を取得します。コード変数に保存します (つまり、ファイル、ログ、またはデータベースではありません)。
  2. クレジット カード情報をプロセッサ (Authorize.NET、Payware、Paypal など) に送信します。
  3. ある種の「トークン」を含む応答を受け取ります。これは、プロセッサとの今後の通信のために、この特定のトランザクションを識別する方法です。
  4. トークンをデータベースに保存します。トークンは単に「トランザクション #12345」を参照し、それ自体には機密情報がないため、暗号化は適切ですが、必須ではありません。
于 2013-08-05T19:24:20.057 に答える