我想知道在 C#(。net framework)的SQL数据库中存储加密信用卡号的最佳方法是什么。我应该使用某种String/SecureString/Byte Array
的{{1}}手动执行此操作吗?
我听说有一个替代方案(可能更简单的选项),服务提供商(您将交易置于其中)将为您提供可用于检索的symmetric encryption
交易信息。我不知道如何采用这种方法,但这是更好的选择吗?我想要最安全,最安全的选择。我也希望 PCI兼容。
答案 0 :(得分:4)
如果要将信用卡号存储在您控制的数据库中,请阅读PCI DSS:
http://en.wikipedia.org/wiki/Payment_Card_Industry_Data_Security_Standard
你为什么要遵守:
https://www.pcisecuritystandards.org/security_standards/why_comply.php
然后阅读如何说服那些要求你在家里存放信用卡的人,这是你带来的伤害世界:
答案 1 :(得分:3)
更新:在我写这篇答案后的三年里,我学到了更多关于PCI的知识,并且发布了更新的规范。虽然以下信息不是错误,但步骤1会将您PCI scope置于"D for Merchants"级别,这是最繁重的级别。
处理此问题的更好方法是不要自己触摸卡数据。您使用处理器提供的表单向他们发送数据,或者您只是重定向到他们(如PayPal)。这两个选项都可以使您达到"A"或"A-EP"级别,这样更容易进行认证。
无论哪种方式,您仍然会收到一个可以安全存储的令牌,因此步骤3和4仍然适用。
原始答案:
我听说过另一种选择(也许是更容易的选择),服务提供商(您将交易置于其中)将为您提供一个可用于检索交易信息的密钥。
这是事实。基本上,这个过程是: