我可以在数据库中保存信用卡密码吗?

时间:2010-10-15 17:52:14

标签: php database credit-card

我需要以明文形式保存数据库中用户的信用卡号和密码(显然是共识),以便从服务器进行自动操作。

有问题吗?

我需要注意什么?

5 个答案:

答案 0 :(得分:19)

PCI-DSS(支付卡行业数据安全标准)绝对禁止将卡详细信息以明文形式保存到磁盘。此外,3位数的卡片安全代码(Amex上的4位数字)无法在授权后存储,理想情况下,只有在授权完成后才能将其保存在内存中。

PCI声明您最多可以存储前六位和后四位的纯文本。打印收据的要求不同,您最多只能打印最后四位数。

如果要在持久化之前尝试加密细节,PCI就不会那么容易。您需要考虑key management, key rotation, split keys。此外,您需要对内部网络安全yearly onsite audits以及公共网络的quarterly audits进行审核。净成本很容易达到数千美元。

总结。甚至不要考虑它!

答案 1 :(得分:18)

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

存储纯文本信用卡号码还有其他安全隐患,但您的协议通常明确禁止存储代码。你需要阅读你的内容以确保你能做到这一点。

至于存储信用卡号码,这通常也是一个非常糟糕的主意。如果您的数据库遭到入侵,您将承担责任,这可能会花费您很多钱。

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

答案 2 :(得分:8)

简短回答,不,不好主意。你必须考虑很多因素,这不是一个好主意。不管怎样,大多数协议都不允许你这样做。

Authorize.net(仅举一个例子)将存储信用卡信息,以便您可以进行重新制作。这是一个非常好的系统,可以解决任何与存储相关的问题。

答案 3 :(得分:5)

CVV代码用于验证持卡人在原始交易时是否拥有该卡。一旦你确认了,你就不再需要了,所以不要存储它。

我所知道的所有商家帐户协议都明确规定您不得存储CVV。这是出于安全原因。

在每次自动交易中使用CVV代码就像是说您的自动系统在交易时拥有该卡,我猜不是这种情况。

第一次验证后,您不需要它。绝对不要存储它。

您不得以明文形式存储信用卡号码。

答案 4 :(得分:2)

@Jeff你应该听。如果您要处理信用卡,您应该(我认为必须,但IANAL)遵守Payment Card Industry Data Security Standard