我可以保存信用卡的安全码到数据库吗?

13

我需要将用户的信用卡号和安全码以明文形式保存在数据库中(显然需要大家的同意),以便服务器进行自动操作。

这样做会有什么问题吗?

我需要注意哪些事项?


10
PCI DSS禁止存储CVV码(假设你所说的“秘密代码”就是指CVV码)。 - Jeff
@Jeff,如果你能证明它是必需的,他们在某些情况下允许它。 - Incognito
4
@user,抱歉,你错了。它无法在授权后存储。我曾参与构建符合PCI标准的付款系统。 - PaulG
5个回答

19

PCI-DSS(Payment Card Industry Data Security Standard)绝对禁止以明文形式将卡片详细信息保存到磁盘中。此外,三位数的卡片安全代码(美国运通卡为四位数)在授权后不能被存储,最好只在授权完成前将其保存在内存中。

PCI规定,您最多可以以明文形式存储前六位和后四位数字。打印收据的要求不同,您最多只能打印最后四位数字。

如果您想在持久化之前对详细信息进行加密,PCI标准并不容易。您需要考虑密钥管理、密钥轮换、分割密钥等因素。此外,您需要进行每年一次的现场审计以检查内部网络安全性,并进行每季度一次的公共网络审计。总费用可能轻松达到数千美元。

总之,别想了!


18

我所见过的大多数信用卡处理协议都不允许您储存卡背面的代码。

储存纯文本信用卡号码还有其他安全隐患,但通常协议中明确禁止储存卡背面的代码,您需要阅读自己的协议以确保是否可以这样做。

至于储存信用卡号码,那通常也是一个非常糟糕的主意。如果您的数据库被攻击,您将承担责任,而且可能会花费大量的钱。

除非您有很好的理由储存信用卡号码并且有一个非常出色的安全团队,否则我不建议储存任何信用卡数据。


8

简短回答,不行,这是个坏主意。你需要考虑很多因素,所以这不是一个好主意。更不用说大多数协议都不允许你这么做。

Authorize.net(只是一个例子)会存储信用卡信息,以便您可以进行重复账单。这是一个简单的系统,非常有效,并且使您免于任何与存储相关的问题。


1
存储信用卡信息是一个非常糟糕的想法,TJX公司因其数据库被黑客攻击而不得不支付1000万美元的赔偿。 - Adam Crossland

6
CVV码用于验证持卡人在原始交易时拥有该卡。一旦您验证了这一点,就不需要再次使用它,因此不要存储它。
我所知道的所有商户账户协议都明确说明,您不能存储CVV。这是出于安全考虑。
在每个自动交易中使用CVV码就好像在说您的自动系统在交易时拥有该卡,我猜这并不是事实。
第一次验证后,您就不需要它了。绝对不要存储它。
您不得以明文方式存储信用卡号码。

1
此外,一些信用卡发行商使用每5分钟更改一次的旋转CVV码。因此,存储它们没有任何意义。 - Peter Bruins

2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接