收集信用卡信息 - 不收取付款

Posted

技术标签:

【中文标题】收集信用卡信息 - 不收取付款【英文标题】:Collecting Credit Card Information - not to collect payment 【发布时间】:2011-04-15 18:29:38 【问题描述】:

我正在使用 mysql 的 Linux 服务器上使用 php

我有一个要求(我试图说服他们)从用户那里收集信用卡信息,以便我们公司可以使用这些卡号来召开会议的酒店房间。我们根本不会自己收卡,而只是将它们发送到酒店。然后,我需要能够下载 CSV 文件,并且每次有人注册一封电子邮件以向管理员提供所有信息。

我试图解释这并不安全,但在我在这里工作之前,其他几位开发人员过去曾为他们这样做过。

我的问题是;有什么办法可以保证这个安全吗?如果没有,是否有任何第三方选项可以实现这一点?


编辑:

我感谢迄今为止发帖的每个人,这让我越来越不想尝试这样做。如果您可以在您的答案中添加针对非技术人员的简单解释,我们将不胜感激,事实上网站来源和链接将对我有很大帮助。我还没有找到任何可以以非技术方式解释这一点的网站。

【问题讨论】:

Jan 的回答让我认为您应该检查您所在地区的法律,以确保他们希望您做的事情不违法。 我给大家一个 +1 回复,谢谢 【参考方案1】:

正如其他人在这里所说,存储信用卡信息需要您获得认证,这是一个事实。您可以要求提供信息来处理交易,但将其保存在任何类型的存储中都是一个很大的禁忌。

幸运的是,authorize.net、braintree.com、paypal.com 等网站可以让您与他们的 API 进行交互,这样您就可以为每个要进行交易的实体获得一个“客户保险库 ID” .

这些第 3 方以 100% 合法的方式存储所有敏感信息。每当您想使用他们保存的信息进行交易时,您都可以使用他们的“保险柜 ID”与服务进行交互。

我使用过 authorize.net、BrainTree 和 PayPal。最近是 BrainTree,并取得了一些不错的成功。我不会推荐 PayPal,除非您需要品牌识别,或者您只想进行直接转账,从而绕过向他们询问任何类型的帐户信息(因为他们已经在 PayPal 中输入了这些信息)。

【讨论】:

【参考方案2】:

存储卡的详细信息确实是个坏主意。您正在以 PCI-DSS 审核的形式为痛苦的世界敞开大门。它不像“使用加密”那么简单,您需要有适当的流程来安全地管理加密密钥、安排密钥轮换、安全地登录访问等等……存储卡的详细信息绝对是您想要避免的事情.

如果您必须准备好一些东西,那么最好的选择可能是您(作为一家公司)从信用卡中向您自己的商家帐户付款,然后单独向酒店付款(来自您的银行帐户/其他)。您充当向酒店付款的客户的代理人。

大多数支付网关都允许您安全地存储卡详细信息,并在以后收费(使用网关返回的令牌 ID),这在这里可能很有用。但是您将无法以任何方式检索卡的详细信息以将其传递给酒店,这就是为什么您需要先付款,然后再组织向酒店单独付款。

尽管如此,这仍然是一项艰巨的任务,因为即使采用这种简化的解决方案,PCI-DSS 的许多领域也将发挥作用。

你问了,所以这里有更多信息:

PCI-DSS 是Payment Card Industry Data Security Standard. 这是一套原则,基本上适用于任何“接触”持卡人数据,尤其是卡号的公司。触摸它的字面意思是对数据的任何处理,即使只是让它通过你的网络而没有被持久化到磁盘就足以强制你必须遵守,(尽管如果你不将细节持久化到磁盘会容易得多)

您尚未说明您在世界的哪个地方,或者这些卡详细信息是如何被捕获的(互联网/电话/亲自)。这些细节对于您如何实现合规性非常重要。

首先查看 PCI-DSS SAQ (Self Assessment Questionnaires)。这些 SAQ 是对于不将持卡人详细信息存储到磁盘的公司的最低要求,并且应该对需要在整个网络中实施的安全性以及应该在整个网络中应用的策略提供良好的印象。公司。

正如我所说,如果您正在考虑存储卡的详细信息,那么事情会变得更加复杂,因为作为一般规则,SAQ 不再足够好。您需要注册一个 QSA(合格的安全评估员)的帮助,他将访问并就数据存储的最佳实践和其他各个方面提供建议。对于此级别的合规性,您正在查看年度审计(由 QSA 执行)和季度网络扫描。查看audit procedures 以详细了解所涉及的内容。特别要看看第 3 节,不要低估implementing proper key management 的难度。

总之,完全符合 PCI 的成本非常高。即使对于已经拥有非常强大的安全策略的公司,仅引入 QSA 并运行季度扫描和年度审计的成本也可能会花费数千美元。

【讨论】:

【参考方案3】:

如果您通过电子邮件发送文件,请务必在发送和接收计算机上使用安全连接(HTTPS / IMAP 或 POP3 over SSL,SMTP over SSL),并在发送前对文件进行加密。您也可以通过 OpenPGP 加密您的邮件和附件。此外,确保两个邮件服务器(发送和接收)之间的安全性,或者简单地使用相同的域来发送和接收电子邮件地址。不要使用 ZIP 文件或相关压缩容器的密码功能,因为它们通常在密码学上很弱。 如果您在文件系统(即 USB 随身碟)上发送它,请务必使用加密的(即 TrueCrypt)。

确保有一台用于下载和上传的安全计算机(进行下载/上传的加密分区、系统上没有间谍软件、密码系统、防火墙)。

【讨论】:

发送未加密的文件并不安全,即使是通过带有 SSL 的 SMTP。您无法知道您的邮件服务器将如何将邮件传输到接收服务器。 谢谢,我以为他使用的是同一个邮件服务器和域。【参考方案4】:

作为曾在这样的系统上工作过的人,以纯文本形式存储任何信用卡信息都是 100% 非法的。您必须加密所有数据,并且不允许您知道任何密钥。这是非常关键的 22,验证数据的唯一方法是猜测听起来很悲伤。这就是发生意外充电的确切原因。

【讨论】:

【参考方案5】:

我建议您至少密切关注卡片行业 PCI 合规性。 Here 是 PDF 文档。

【讨论】:

【参考方案6】:

首先,我不是律师。我之前已经多次实现了CC处理代码,但我只熟悉丹麦的法律法规,所以你的里程可能会有所不同。

据我所知,您需要注意一些限制(来自 CC 提供商的法律和法规)。我不知道您在世界哪个地方,但在许多国家/地区,您需要获得 PCI 认证才能处理信用卡数据,这是一个极其繁重、昂贵且持续的过程。

其他国家或州可能有通知规则,要求您支付通知持卡人安全措施的费用 - 除非您非常小心,否则这并非不可能。

一般来说,我建议不要使用该程序。如果出现问题,您可能需要承担任何费用。

【讨论】:

【参考方案7】:

    确保您的服务器尽可能安全并证明它尚未受到威胁。如果您的服务器受到攻击,这些都不会真正奏效。

    使用 SSL 保护此信息在传输过程中

    收到这些详细信息后立即加密。这将有助于保护它静止。如果可能,请使用密钥对的公钥对其进行加密,其中私钥(用于解密)在您的服务器上不是。这很可能是您将此信息放入您需要发送的电子邮件正文中,然后在您的客户拥有私钥的地方使用公钥加密对正文进行加密。 (你可以在这里使用 PGP)。这样,数据在您的服务器上的帮助尽可能短,然后一旦离开您的服务器,就只能由您的客户端访问。如果您使用对称加密算法,那么您的密钥也必然会在您的服务器上的某个地方(磁盘、内存等),攻击者可以获取并使用它来重新获得对详细信息的访问权限。

这本身并不是一种认可,但我之前曾在类似情况下使用过它并取得了很好的效果:http://www.pgp.com/products/commandline/

请记住,安全漏洞总是存在的,但是通过这些步骤,您将提高抵御攻击的巨大障碍。我还可以补充一点,您可以从服务器的直接构建中研究像 Trip Wire 这样的系统完整性解决方案。当然,请确保您的所有密码都是强密码。

【讨论】:

【参考方案8】:

这是非常不安全的,我认为你反对它是正确的。那就是……

一些想法:

酒店能否为您提供可直接分发给用户的房价/团体代码?也许您甚至可以给他们一个链接,该链接直接指向酒店的预订页面,并且代码已经填写好了。

除非您可以在启用 SSL 的网站上执行此操作,否则不要考虑实施此操作。

不要将抄送号码保存在任何地方, 只需生成电子邮件并折腾 出号。这使您不必担心大量非常困难的应用程序/服务器安全问题。

使用 GPG 加密电子邮件或 等效,因此它受到保护 过境,并且只能由预期的收件人阅读。

【讨论】:

以上是关于收集信用卡信息 - 不收取付款的主要内容,如果未能解决你的问题,请参考以下文章

为计费服务 iOS 应用接受信用卡付款

Braintree 可以在没有账单信息的情况下从卡中收取费用吗?

接受信用卡/电子支票付款

Authorize.net - 延迟付款和重复

未在所有 Paypal 交易中收取小额支付费用

是否可以在使用信用卡的定期付款配置文件期间向 INITAMT 收费?