21

可能的重复:

  1. 使用 PHP 获取和存储信用卡信息的最佳实践
  2. 存储信用卡详细信息
  3. 存储信用卡信息

我需要在电子商务网站中存储信用卡号。我不打算存储整个信用卡号,因为这将是非常危险的。我想至少存储前五位数字,以便以后识别发卡的金融机构。理想情况下,我想尽可能多地存储信用号,以帮助将来进行交叉引用等。

我可以安全地存储多少位数字以及哪些特定数字?

例如,我想这不够安全:

5555 5555 555* 4444

因为你可以计算出丢失的数字。

同样,这将是安全的,但没有那么有用:

5555 5*** **** ****

是否有一种公认的模式来存储部分信用号码?

4

7 回答 7

39

支付卡数据安全标准规定,如果您正在处理持卡人数据,那么您将受到 PCI DSS 的约束(这是非常全面的,并且需要遵守)。如果您想存储卡号的一部分,并且不想处理标准,那么您需要确保 a) 您存储的数字不超过前 6 位和后 4 位;b) 您永远不会存储、处理或传输更多信息。这意味着必须在数据进入您的控件之前执行截断。

鉴于您正在谈论电子商务网站,我认为您迟早必须处理 PCI DSS(因为如果您没有使用完整的 PAN,则无法处理交易)。实际上,您应该避免存储超过 PAN 的前 6 位和后 4 位;然后,标准不会“关心”这些数据,您可以将其存储为您认为合适的任何形式。例如,如果您存储前 7 位数字,那么标准的要求 3 就会启动(并且您开始必须真正了解加密中的密钥管理)。

我希望这是有用的。

于 2009-09-28T08:51:24.960 回答
5

2013 年 3 月编辑
一个非常相关的资源是PCI 安全标准委员会,该组织于 2006 年由五个全球最大的信用卡品牌(AmEx、Visa、MasterCard、JCB International 和 Discovery)成立,是事实上的安全权威支付卡行业 (PCI) 的事宜。
该组织特别发布了PCI 数据安全标准,目前是 2.0 版,涵盖诸如管理完整或部分信用卡号等问题。该文档如果免费提供,但需要简单的注册和许可条款的确认。

以下为原文,c.2009 年的回答,大部分是正确的,但都是杜撰的
一种常见的做法(是否合法,我不知道)是存储最后 4 位数字,因为这可用于帮助客户确认他/她的哪些信用卡用于特定交易。

在不显着提高恶意人员猜测完整号码的几率的情况下,可以存储前 4 位数字s,它们代表发行卡的金融机构,如问题中所述。

不要,保存比这 8 个数字更多的数字,因为否则,鉴于LUHN-10 校验和,您可能会提供足够的信息来使猜测完整数字更加合理(如果仍然相对困难,即使从给定的系列使用的洞察力发行人,在给定的时间段内,但应该小心......)

为了使整个事情在技术上和法律上更安全,您可以考虑仅在客户明确允许的情况下存储此类信息。您还应该考虑用一个简单的散列来屏蔽这些信息,以便存储在数据库中

此外,在特定交易之后,您可以/应该存储的是信用卡处理器在提交交易时提供的交易 ID 。此 ID 是允许定位您甚至需要的大部分(全部?)信息的关键,特定交易是否存在任何问题。这种类型的信息通常可以从处理公司维护的安全网站查询,以及一些汇总报告,其中可能包括按卡类型(美国运通、维萨...)分组,如果这就是您考虑存储的原因前四个。

于 2009-09-28T04:59:14.213 回答
3

如果您不需要存储整个信用卡号,为什么还需要存储呢?如果要保存发卡的金融机构,为什么不保存发卡的金融机构呢?

于 2009-09-28T04:46:13.363 回答
2

PCI/DSS 文档的第 3.3 节回答了您的具体问题。前六个和后四个是最大的显示。客户(纸质?)收据更具限制性。那些有合法需要知道的人可以看到完整的卡片数据。

我的建议是联系您的商家提供商,看看您可以使用哪些选项。许多现代交易网关具有“保险库”功能,其中敏感信息存储在提供商处,当您想要向客户收费或查看帐户信息时,您只需通过令牌编号引用客户。

同样,交易特定令牌的使用可用于引用存储在提供程序系统上的所需数据。

但是,我不能过分强调阅读和理解 PCI DSS 的重要性。简单地使用安全存储并不会神奇地使您不受 PCI 合规性要求的约束!!这只有在您的系统从不接触完整卡数据时才有可能。

于 2009-09-28T18:08:47.267 回答
1

接受的模式是根本不存储它们。

在某些司法管辖区,您存储它们或它们的任何部分可能会触犯法律。

相反,您可以存储信用卡号的单向(因此不可恢复)哈希。

于 2009-09-28T04:42:31.657 回答
1

信用卡公司对此有一个标准。您可能会发现它隐藏在您的支付处理器的服务条款中的某个地方,您将遵守此标准。它回答你的问题。你可以在这里找到标准

于 2009-09-28T04:58:59.580 回答
0

在加拿大,通常的方法是存储前 4 位数字(用于标识金融机构)和最后 4 位数字以标识信用卡。

但请确保您没有违反任何法律。

于 2009-09-28T04:49:09.287 回答