2010-09-22 56 views
10

我正在使用MySQL的Linux服务器上的PHP工作。收集信用卡信息 - 不收取付款

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

我试图解释这是不安全的,但其他几位开发人员在我工作之前曾为他们做过这件事。

我的问题是;无论如何,这是安全的吗?如果没有,有任何第三方的选择,使这种情况发生?


编辑:

我感谢大家谁也发布至今,它简直让我想尝试做到这一点越来越少。如果你可以给你的答案添加简单的解释,面向非技术人员,这将不胜感激,实际上网站的来源和链接将帮助我很多。我还没有发现任何可以用非技术手段解释这一点的网站。

+0

Jan的答案让我觉得你应该检查你的地区法律,以确保他们希望你做的事情不违法。 – Daenyth 2010-09-22 14:41:15

+0

我给每个人+1回复,谢谢 – Nicknameless 2010-09-23 15:03:32

回答

7

存储卡的详细信息真的不好。您正在以PCI-DSS审计的形式开启自己的世界。它不像'使用加密'那么简单,您需要有适当的流程来安全地管理加密密钥,安排密钥轮换,安全地登录访问等等......存储卡的细节绝对是您想要避免的事情。

如果您的有适当的地方,那么最好的选择可能是您(作为公司)从您的信用卡付款到您自己的商户帐户,然后单独支付酒店(从您的银行账户/其他)。您代表客户向酒店支付款项。

大多数支付网关都允许您安全地存储卡的详细信息,并在稍后的日期(使用由网关返回的令牌标识)进行收费,这在此可能很有用。但是,您无法以任何方式检索卡片详细信息以传递给酒店,这就是为什么您需要付款,然后单独付款给酒店。

尽管采用这种简化的解决方案,PCI-DSS的许多领域仍将发挥其作用。

你问,所以这里是详细信息:

PCI-DSSPayment Card Industry Data Security Standard.这是一组的,基本上适用于任何公司,“触摸”持卡人数据,特别是卡号准则。从字面上理解它意味着对数据的任何处理,即使只是让它通过网络,而不会永久保存到磁盘,也足以强制您遵守(尽管如果您不将详细信息保存到磁盘)

您尚未说明您所处的世界的哪个部分,或者如何捕获这些卡细节(互联网/电话/本人)。这些细节对于如何达到合规性很重要。

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

正如我所说,如果你想存储卡的细节,那么事情会变得更加复杂,因为通常情况下,SAQ不够好。您需要注册QSA(合格安全评估师)的协助,他们将访问数据存储的最佳实践以及各种其他要点。对于这一级别的合规性,您需要查看年度审计(由QSA执行)和季度网络扫描。看看audit procedures以详细了解涉及的内容。特别看看第3节,不要低估implementing proper key management的难度。

总之,全面的PCI合规性将会非常昂贵。即使对于已经有已有具有相当强大的安全策略的公司来说,引入QSA并单独运行季度扫描和年度审计的成本可能会高达数千美元。

1
  1. 确保服务器尽可能为安全和证明它是不是已经受损。如果您的服务器遭到入侵,这一切都不会真正奏效。

  2. 在运输过程中使用SSL保护此信息

  3. 收到后立即加密这些细节。这将有助于保护它静止。如果可能,请使用您的服务器上私钥(用于解密)为而非的密钥对的公钥对其进行加密。这可能很容易,因为您将这些信息放入您需要发送的电子邮件正文中,然后使用公钥加密对您的客户端进行私钥加密。 (你可以在这里使用PGP)。通过这种方式,数据在服务器上的帮助尽可能简短,然后一旦离开服务器,只能由客户端访问。如果您使用对称加密算法,那么您的密钥也必然会位于服务器的某处(磁盘,内存等),攻击者可以获取并使用这些密钥重新获得详细信息。

这不是背书,本身,而是我已经收到了良好效果类似的情况下使用此之前:http://www.pgp.com/products/commandline/

记住,总有一些安全漏洞,但你会养用这些步骤抵御攻击的大屏障。我还可以补充一点,您可以从服务器的立即构建中查看诸如Trip Wire之类的系统完整性解决方案。当然,确保你的所有密码都很强大。

7

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

一些想法:

  • 酒店可以给你一个速度/组代码,您可以直接传播到你的用户?也许你甚至可以给他们一个链接,直接进入酒店的预订页面,代码已经填好。

  • 甚至不要考虑实现这个,除非你可以在支持SSL的网站上实现。

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

  • 使用GPG或 等效加密电子邮件,以便在 传输中对其进行保护,并且只能由预期收件人阅读。

4

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

1

如果通过电子邮件发送文件,请务必在发送和接收计算机上使用安全连接(基于SSL的HTTPS/IMAP或POP3,基于SSL的SMTP),并在发送前对文件进行加密。您也可以通过OpenPGP加密您的邮件和附件。另外,请确保两台邮件服务器之间的安全性(发送和接收),或者仅使用相同的域来发送和接收电子邮件地址。请勿使用ZIP文件或相关容器的密码功能,因为它们通常密码较弱。 如果你在文件系统上发送它(例如USB pendrive),一定要使用一个加密的文件(即TrueCrypt)。

一定要有一个安全的计算机,下载和上传参与(下载/上传发生的加密分区,没有系统间谍软件,密码系统,防火墙)。

+1

发送未加密的文件是不安全的,甚至通过SSL的SMTP。您无法知道邮件服务器如何将邮件传输到接收服务器。 – 2010-09-22 14:49:02

+0

谢谢,我认为他使用的是相同的邮件服务器和域。 – Soravux 2010-09-23 19:37:29

2

作为一个像这样的系统工作的人,以纯文本格式存储任何信用卡信息是100%非法的。您必须对所有数据进行加密,并且不允许您知道任何密钥。这是相当不错的22,验证数据的唯一方法是猜测听起来很可悲。这是意外收费发生的确切原因。

2

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

幸运的网站像authorize.net,braintree.com,paypal。com等会让你与他们的API进行交互,这样你就可以为每个想要进行交易的实体获得一个“Customer Vault ID”。

这些第三方以100%合法的方式存储所有敏感信息。而且,只要您想使用他们保存的信息进行交易,就可以使用他们的“Vault ID”与服务进行交互。

我用过authorize.net,BrainTree和PayPal。最近它是BrainTree并且与他们取得了一些成功。除非您需要品牌认可,否则我不会推荐PayPal,或者您只是想直接转账,以避免向他们索要任何类型的账户信息(因为他们已经在PayPal中输入)。