在SQL数据库中存储加密的信用卡号

问题描述

自从我写了这个答案的三年以来,我对PCI有了更多的了解,并且发布了新的规范。尽管下面的信息没有 ,但第1步将您置于PCI范围“ D for Merchants”级别,这是最麻烦的。

处理此问题的更好方法是不要自己触摸卡数据。您可以使用处理器提供的向其发送数据的表格,也可以重定向到它们(例如使用PayPal)。这两个选项都可以使您处于“ A”“ A-EP”级别,这更容易进行认证。

无论哪种方式,您仍然会收到可以安全存储的令牌,因此第3步和第4步仍然适用。

我听说,作为一种替代方法(可能是更简单的选择),服务提供商(与您放置事务)将为您提供可用于检索事务信息的密钥。

这是真实的。基本上,该过程是:

  1. 从客户/用户获取信用卡信息。存储在 变量中(即,不是文件,日志或数据库)。
  2. 将信用卡信息发送到您的处理器(例如Authorize.NET,Payware,Paypal等)。
  3. 收到包含某种“令牌”的响应。通过这种方式,您可以识别此特定事务,以便将来与处理器进行通信。
  4. 将 存储到您的数据库中。加密会很好,但不是必需的,因为令牌仅引用“ Transaction#12345”,并且本身没有敏感信息。

解决方法

我想知道最好的方法是将 加密的信用卡号 存储在用于 C#
(。net框架)的SQL数据库中。我应该通过String/SecureString/Byte Array某种方式手动执行此操作symmetric encryption吗?

我听说,作为一种替代方法(可能是更简单的选择), 服务提供商
(您与之放置交易)将为您提供key可用于检索交易信息的服务。我不知道该怎么做,但这是更好的选择吗?我想要最安全最安全的选择。我也想 符合PCI