在线信用卡存储?

23

我即将继承并经营一个设计非常糟糕的小型商业零售网站,与其他问题一样,最大的关注点在当前信用卡处理方面。

目前,所有者从在线订单表单中检索信用卡信息(姓名、卡号、CVV2和过期日期),并将所有这些信息以纯文本形式保存在MySQL数据库中。然后,他会收到一封通知邮件,提示有人下单了。此后,他有一个管理后台页面,可以查看订单和信用卡信息,他会使用该信息来离线进行自己的商家处理。

从后端页面检索信息后,信用卡号码和CVV2会立即被删除(调用PHP脚本自动完成)。如果未访问该页面,则信息也将在7天内被删除。因此,在交易处理之前,所有信息都有可能以纯文本形式保存在数据库中7天。

这似乎不是一种好的设计,而且可能是非法的。如果它是非法的,我将不得不向他说明这个问题,因为他还没有意识到这一点。

我的问题:除了不安全之外,这是否违反了使用条款(PCI DSS)或者违法?如果是,我该如何向他证明这一点,以便他允许我改变他的方式(显然,我不想涉足非法的事情。此外,有时使用条款的措辞可能会有主观性)?最后,修复此问题的最佳选择是什么(第三方在线商家、遵守PCI DSS合规性或其他内容)?


1
你在哪个国家? - Noon Silk
4
我建议关闭这个问题,因为它是一个法律问题,而不是一个编程问题。我将保留原意并尽可能使其通俗易懂。 - durron597
6个回答

21

这是PCI DSS的违规行为。不仅您存储了不应该存储的信息(CVV),而且您没有对信用卡号进行加密(同样违规)。

更糟糕的是,他违反了Visa和MasterCard的指南,规定所有在线交易必须使用符合ECI标准的设备或软件进行处理,并且互联网订单必须具有单独的商户账户。他们的信用卡终端明显不符合ECI标准,因为没有一个符合。他们需要获取一个新的商户帐户并使用像Authorize.Net这样的支付网关来处理这些订单。

编辑

由于我怀疑网站所有者实际上不会费心获取新的商户帐户或实施支付网关,您最好使用双向加密来存储此信息。然后确保他们用于检索信用卡信息的页面被加密(SSL证书),以便从端到端保护信息安全。

我强烈建议您获取互联网商户帐户并使用像Authorize.Net这样的支付网关。除了符合PCI和ECI标准以及聪明的做法外,企业失去商户帐户甚至被列入黑名单并被禁止再次拥有真正的商户帐户的潜力非常高。只需要一个退单,他们的商户帐户供应商就会意识到他们在做什么,并开始麻烦。


ECI合规性是否适用于此情况?他并没有在线进行交易,只是在线获取信息以便离线交易。这有点像通过电话接收信用卡信息来进行交易。还是你是说这需要另一个商户账户? - Stephen Watkins
2
ECI合规性是一个问题,因为订单是通过他们的网站发起的。如果是通过电话发起的,ECI就不适用。基本上,这不是你如何处理订单,而是它的来源在哪里。它还需要另一个商户账户,因为在互联网上发起的订单必须与非互联网订单分开。这主要是由于退款问题。 - John Conde

4
这是违反PCI规则的重大违规行为。您可以在此处获取文件:https://www.pcisecuritystandards.org/security_standards/pci_dss.shtml建议采用第三方服务,如Google Checkout等。成为符合PCI标准的合规企业是一项巨大的头痛,并涉及年度审查(可以是自我评估),其中可能包括渗透测试等。如果您真正仔细研究它,他可能根本不需要访问信用卡信息,只需要交易ID。您不仅需要加密数据,还必须有一个精心设计的方案来保护加密密钥。这比小型企业想要参与的范围要大得多。上面的一些建议听起来很好,但并不符合PCI规范。阅读文件,您将很快看到这是一项庞大的工程。我目前支持一个内部符合PCI标准的系统,并不得不花费大量精力使其达到标准。我们还不得不进行了一些网络更改。对于企业来说,转换为第三方系统会更便宜。

2

有很多第三方支付提供商可以为您处理所有安全和合规问题。

对于任何中小型企业来说,这是一项绝对应该外包给专业人士的功能。


2
使用第三方信用卡处理网关可以避免在客户端服务器上存储信用信息的需要- POST的信用卡信息会传递给处理网关,该网关返回可供您的客户记录保留的交易ID。
像Authorize.net、LinkPoint Central甚至PayPal这样的公司提供信用卡付款网关。所有主要的网关都有现成的代码,可以将购物车与大多数流行的Web编程平台(.NET、PHP、Java等)集成。此外,大多数主要购物车支持主要网关的开箱即用,或者至少对于大多数网关有可安装的模块。
因此,您的客户应该设置一个互联网支付网关,并将其现有代码与网关集成。

1

保护付款数据是一个复杂的话题,即使是非常大的企业有时也会发生系统中有大量信用卡被盗的情况。

至少应该考虑以下步骤:

  • 确保在线订单表单使用 HTTPS 来捕获数据。
  • 如果数据库和 Web 服务器是不同的,确保它们之间有一个安全路径。
  • 加密数据库中的付款数据。MySQL 参考文献
  • 确保后端网页有强大的访问控制(是否可以被外部世界物理访问?是否需要强密码?是否是 HTTPS?)
  • 确保没有日志(例如调试日志)最终将支付信息写入文件系统。

0

这绝对违反了PCI规则。不过,如果很少有人需要查看存储的数据,添加加密应该不难。

作为第三方信用卡交易处理公司的员工,如果他们的系统如此糟糕,我强烈推荐使用。但是,您仍然需要加密这些信息,或者在发送给TPP后根本不存储它们。TPP真正为商家服务,因此他们可以帮助您解决任何合规问题,并帮助您获得最佳的互换费率。


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